sqlite在打开连接后首先执行查询缓慢

时间:2014-06-01 19:23:28

标签: sqlite lua

我创建了一个带有1个表和超过500,000条记录的sqlite3数据库(使用SQLite Expert Professional); 如果我命令一个简单的查询,如:

select * from tableOne where entry like 'book one'

如果这是我在连接数据库后执行的第一个命令,则需要相当长的时间才能执行并检索结果(~15秒)但是在第一个命令之后,一切都恢复正常,现在每个命令都执行一个非常可接受的速度;

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

是什么原因? 我怎么能阻止这个?

1 个答案:

答案 0 :(得分:0)

最有可能在您第一次运行此操作后,您已将所有数据加载缓存,因此后续查询速度很快。你有entry的索引吗?索引将允许使用entry作为过滤器进行有效查询。您可能想要创建一个:

CREATE INDEX i_tableone_entry ON tableOne( entry );