我创建了一个带有 1 个表和超过 500,000 条记录的 sqlite3 数据库(使用 SQLite Expert Professional);如果我命令一个简单的查询,如:
select * from tableOne where entry like 'book one'
Run Code Online (Sandbox Code Playgroud)
如果这是我连接到数据库后要执行的第一个命令,执行和检索结果需要相当长的时间(约 15 秒),但在第一个命令之后,一切都恢复正常,现在每个命令都以非常可接受的方式执行速度;
即使我关闭我的应用程序(我使用带有 sqlite 模块的纯 LUA)(并且在它的逻辑中,合理地关闭所有连接)只要 Windows(8 x64)正在运行并且没有重新启动,即使是第一个命令,每个命令也能很好地执行但是重新启动 Windows 后,再次,就像总是第一个命令执行速度很慢一样;
是什么原因?我怎样才能防止这种情况?
最有可能的是,在第一次运行此命令后,您已将所有数据加载到缓存中,因此后续查询速度很快。你有索引吗entry?索引将允许使用entry过滤器进行高效查询。您可能想要创建一个:
CREATE INDEX i_tableone_entry ON tableOne( entry );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1491 次 |
| 最近记录: |