Intereting Posts
Как обрезать обнаруженное лицо Поток xmpp отключил вызов после подключения в ios? heightForRowAtIndexPath вызывается, но высота не изменяется C4Image фильтрует все выцветание до белого WKWebView drawViewHierarchyInRect не отображает содержимое webGL на телефоне вычисление общего хода загрузки нескольких файлов с помощью AFNetworking Где получить секретный ключ для сертификата разработчика iPhone? Как обнаружить события клавиатуры на аппаратной клавиатуре на iPhone (iOS) Являются ли блоки переданы по ссылке или по значению от одного вызова в стек к другому? Странная консоль msg "LaunchServices: invalidationHandler называется", только найденный на iphone Игрок MobileVLCKit показывает черный экран на iOS 11 Предупреждение при отправке моего приложения с помощью SDK Google Maps для iOS Ver.1.9.0 Матч нажал строку TableView (строка), чтобы найти соответствующий уникальный идентификатор Phonegap – изображения не будут отображаться после обновления пакета, когда iCloud включен Массив по-прежнему пуст даже после установки в DispatchQueue.main.async Swift 3

Заявление об обновлении SQLite3 ДЕЙСТВИТЕЛЬНО медленно

Я потратил часы, пытаясь понять, почему это утверждение обновления работает медленно. У меня есть база данных SQLite на iOS, и в настоящее время занимает около ~ 2 секунд для завершения STEP для этого оператора обновления. Поскольку у меня есть от 10 до 100 повторений этого кода, чтобы пройти, прежде чем двигаться дальше, это заканчивается тем, что занимает минуту и ​​12 минут, что не подходит для моего приложения.

Пожалуйста помоги. 🙂

BOOL result; if (status == -1) { return -1; } else { if(updateStmt == nil) { const char *sql = "update Points set name = ?, type = ?, subtype = ?, description = ?, address = ?, latitude = ?, longitude = ?, porder = ?, phone = ?, url = ?, segmentTime = ?, segmentDistance = ?, segmentMins =?, userSelectedDirectionType =?, currentDirectionType=?, distanceType = ?, dateTime1 = ?, dateTime2 = ?, recalcDir = ? where id = ? "; if(sqlite3_prepare_v2(database, sql, -1, &updateStmt, NULL) != SQLITE_OK) NSLog(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database)); } sqlite3_bind_text(updateStmt, 1, [annotation.title UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_int(updateStmt, 2, annotation.typeID); sqlite3_bind_int(updateStmt, 3, annotation.subtypeID); sqlite3_bind_text(updateStmt, 4, [annotation.description UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_text(updateStmt, 5, [annotation.address UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_double(updateStmt, 6, annotation.coordinate.latitude); sqlite3_bind_double(updateStmt, 7, annotation.coordinate.longitude); sqlite3_bind_int(updateStmt, 8, annotation.porder); sqlite3_bind_text(updateStmt, 9, [annotation.phone UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_text(updateStmt, 10, [annotation.URL UTF8String], -1, SQ sqlite3_bind_text(updateStmt, 11, [annotation.segmentArrivalTime UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_double(updateStmt, 12, annotation.Segment); sqlite3_bind_int(updateStmt, 13, annotation.segmentMins); sqlite3_bind_int(updateStmt, 14, annotation.userSelectedDirectionType); sqlite3_bind_int(updateStmt, 15, annotation.currentDirectionType); sqlite3_bind_int(updateStmt, 16, annotation.distanceType); sqlite3_bind_double(updateStmt, 17, annotation.arrivalDateAndTime.timeIntervalSince1970); sqlite3_bind_double(updateStmt, 18, annotation.departureDateAndTime.timeIntervalSince1970); sqlite3_bind_int(updateStmt, 19, annotation.shouldRecalculateNextPointsDirections); sqlite3_bind_int(updateStmt, 20, annotation.pointID); if(SQLITE_DONE != sqlite3_step(updateStmt)) NSLog(@"sqlite: Error while updating a point id = %d. '%s'", annotation.pointID, sqlite3_errmsg(database)); result = YES; } sqlite3_reset(updateStmt); return result; 

Я закончил тем, что возвратил свою библиотеку SQLite3 к копии из старой резервной копии моего приложения и почему-то ускорился. Кроме того, я заметил, что где-то еще в моем коде я делал повторные инструкции по обновлению без использования транзакции (как упоминал @HotLicks), поэтому исправление также сильно изменило ситуацию. Все еще не могу понять, почему исходная проблема возникла с этим оператором обновления, занимающим много времени, но я предполагаю, что, возможно, библиотека SQLite3, которую я использовал, была как-то испорчена.

Weird.