【问题标题】:sqlite first executed query slow after opening connectionsqlite在打开连接后首先执行查询慢
【发布时间】:2014-06-02 13:07:37
【问题描述】:

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

select * from tableOne where entry like 'book one'

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

即使我关闭了我的应用程序(我使用带有 sqlite 模块的纯 LUA)(并且在它的逻辑范围内,合理地关闭所有连接)只要 Windows(8 x64)正在运行且未重新启动,每个命令甚至第一个命令都会执行很好,但是在重新启动 Windows 之后,再次像往常一样,第一个命令执行速度很慢;

是什么原因? 我怎样才能防止这种情况发生?

【问题讨论】:

  • 发布架构。该命令可能正在查看所有 500,000 行。

标签: sqlite lua


【解决方案1】:

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

CREATE INDEX i_tableone_entry ON tableOne( entry );

【讨论】:

  • 非常感谢; create index第一次尝试就解决了延迟问题;
猜你喜欢
  • 2011-04-12
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多