连接打开后,SQLite第一次执行查询较慢。

我使用SQLite Expert Professional创建了一个sqlite3数据库,其中包含1个表和超过500,000个记录; 如果我执行一个简单的查询:

select * from tableOne where entry like 'book one'

如果这是我连接到数据库后执行的第一条命令,那么它执行和检索结果的时间会非常长(约15秒),但是第一条命令之后,一切都恢复正常,现在每个命令都能以非常可接受的速度执行;

即使我关闭我的应用程序(我使用带有sqlite模块的纯LUA)(并在其逻辑中合理地关闭所有连接),只要Windows(8x64)正在运行并且没有重启,即使第一条命令,每个命令甚至执行得很好但在重新启动Windows后,像往常一样,第一条命令执行缓慢;

原因是什么? 我该如何防止这种情况发生?

点赞
用户3148478
用户3148478

很可能,在您第一次运行此代码后,您已经通过缓存加载了所有数据,因此后续的查询速度会很快。 您是否在 entry 上创建了索引? 索引允许使用 entry 作为过滤器进行高效查询。 您可以创建一个索引:

CREATE INDEX i_tableone_entry ON tableOne( entry );
2014-06-02 02:59:17