我正在尝试了解sqlite3在执行SELECT查询时的工作原理。我确实看到,为了阅读结果,你必须使用sqlite3_step
来转到下一行。
示例
sqlite3_prepare_v2(db, "select name;", -1, &stmt, NULL);
sqlite3_bind_int(stmt, 1, 16);
while ( (rc = sqlite3_step(stmt)) == SQLITE_ROW) {
printf("%s\n", sqlite3_column_text(stmt, 0));
}
sqlite3_finalize(stmt);
我的问题是SELECT数据是如何存储的?在内存中还是在文件中?另外,如何在不必循环整个结果或必须将整个SELECT查询读入内存的情况下读取特定行?
答案 0 :(得分:1)
数据存储在磁盘上的数据库文件中。查询的数据被加载到内存中。
结果行是按需计算的,因此查询永远不需要完全在内存中;只能访问当前行,您可以做的唯一动作就是尝试跳到下一行。
如果您不想单步执行所有结果行,请更改查询以仅返回所需的行。