Sqlite的第一个查询在Windows XP中由于caching时间过长?

在Windows中使用SQLite时,它看起来像是一个问题,其中相对较大的数据集的第一个查询花费比后续查询长的时间。 我相信它不涉及查询结构。

从互联网上的其他post看来,这可能与Windows中的caching问题有关(它试图在启动时caching大文件),但是我无法validation这一点。 此外,我无法find足够的信息在SQLite文档中,以解决SQLite而不是Windows的问题。

我有两个与此有关的问题:

你可能会发现从sqlite-users邮件列表的消息线程有帮助。

缓存不是一个“问题”。 发生了什么事是第一次查询被执行,结果被加载到缓存然后返回。 在随后的调用中,结果将从缓存中提取。

如果关闭缓存,则所有查询将花费相同(更长)的时间来返回数据。

这就是数据库缓存的本质。

如果第一个查询花费的时间太长,则应该考虑调整其性能的方法。

另一个缓存是动态加载DLL的时候。 如果这就是你正在观察的,你可以在应用程序启动时执行查询。 这会减慢你的应用程序启动,但你的第一个真正的查询会更快。