我有一个包含多个表的db文件,每个表至少有20k条记录。现在我正在尝试使用sqlite3在iPhone中执行内连接查询。
SELECT DISTINCT abc.id, abc.full_name FROM abc INNER JOIN xyz ON abc.id = xyz.id limit 10 ;
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
// populating my custom objects
}
}
当我使用行数较少的表尝试相同的查询时,sqlite3_step()命令工作正常。
如果有人能够在声明执行过程中明确指出它究竟发生了什么,那就太棒了。在执行查询之前是否将整个表加载到内存中,如果是,那么最大值是多少。执行内部联接时限制表中的记录数。
当我尝试从一个包含50k记录的表中获取记录时,其工作正常,没有任何问题。
提前致谢
Sudheer