sqlite3如何管理SELECT查询数据?

时间:2016-03-23 19:28:02

标签: sqlite

我正在尝试了解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查询读入内存的情况下读取特定行?

1 个答案:

答案 0 :(得分:1)

数据存储在磁盘上的数据库文件中。查询的数据被加载到内存中。

结果行是按需计算的,因此查询永远不需要完全在内存中;只能访问当前行,您可以做的唯一动作就是尝试跳到下一行。

如果您不想单步执行所有结果行,请更改查询以仅返回所需的行。