Intereting Posts
Установите максимальное количество сверстников в MCSession Измените строку NSURL этим методом stringByAddingPercentEncodingWithAllowedCharacters Xcode 4.1 Отключение двух ModalViewController в одно и то же время изменения в записанных видеофайлах с высоким fps с iOS 8.0.2 до 8.1? Переменная __block возвращает значение null. Как я могу получить доступ к NSString внутри переменной __block? Как поместить фоновое изображение в текстовое поле и текстовое представление в iphone? Ошибка инициализации модели преобразования CoreML Отображение местоположения пользователей на Mapkit с помощью CLLocationManager Кольцо кругов в круге, динамически Как вызвать window.focus () при каждом запуске приложения trigger.io на мобильном телефоне После изменения расположения файлов проект не может распознать некоторые из моих классов Экспорт CALayer с неявной анимацией через AVExportSession Получать вызовы методов делегата с нескольких контроллеров просмотра Swift 2.0 Воспроизведение пользовательского звука в делегате приложения в фоновом режиме Всегда получать "(# 324) Требуется загрузить файл" при размещении изображения в Facebook с помощью графического API

Заявление об обновлении 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.