gpt4 book ai didi

ios - SQLite3更新语句真的很慢

转载 作者:行者123 更新时间:2023-12-02 00:06:30 59 4
gpt4 key购买 nike

我花了几个小时试图弄清楚为什么这个更新语句很慢。我在 iOS 上有一个 SQLite 数据库,目前 STEP 需要大约 2 秒才能完成此更新语句。由于在继续之前我需要重复 10 到 100 次此代码,因此最终需要 1 到 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 库存在某种缺陷。

奇怪。

关于ios - SQLite3更新语句真的很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252246/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com