我创建了一个带有1个表和超过500,000条记录的sqlite3数据库(使用SQLite Expert Professional); 如果我命令一个简单的查询,如:
select * from tableOne where entry like 'book one'
如果这是我在连接数据库后执行的第一个命令,则需要相当长的时间才能执行并检索结果(~15秒)但是在第一个命令之后,一切都恢复正常,现在每个命令都执行一个非常可接受的速度;
即使我关闭我的应用程序(我使用纯LUA和sqlite模块)(并且在其逻辑中,合理地关闭所有连接)只要Windows(8 x64)运行未重新启动,每个命令甚至第一个执行非常好,但在重新启动Windows之后,再次像第一次执行命令一样慢;
是什么原因? 我怎么能阻止这个?
答案 0 :(得分:0)
最有可能在您第一次运行此操作后,您已将所有数据加载缓存,因此后续查询速度很快。你有entry
的索引吗?索引将允许使用entry
作为过滤器进行有效查询。您可能想要创建一个:
CREATE INDEX i_tableone_entry ON tableOne( entry );