在Windows中使用SQLite时,它看起来像是一个问题,其中相对较大的数据集的第一个查询花费比后续查询长的时间。 我相信它不涉及查询结构。
从互联网上的其他post看来,这可能与Windows中的caching问题有关(它试图在启动时caching大文件),但是我无法validation这一点。 此外,我无法find足够的信息在SQLite文档中,以解决SQLite而不是Windows的问题。
我有两个与此有关的问题:
任何人都可以确认有一个Windows的大型文件,可能会影响SQLite数据库(文件扩展名不是“.db”),并提出一些解决方法?
在SQLite内部是否有任何事情可以解释第一个查询比其他查询慢得多。
你可能会发现从sqlite-users邮件列表的消息线程有帮助。
缓存不是一个“问题”。 发生了什么事是第一次查询被执行,结果被加载到缓存然后返回。 在随后的调用中,结果将从缓存中提取。
如果关闭缓存,则所有查询将花费相同(更长)的时间来返回数据。
这就是数据库缓存的本质。
如果第一个查询花费的时间太长,则应该考虑调整其性能的方法。
另一个缓存是动态加载DLL的时候。 如果这就是你正在观察的,你可以在应用程序启动时执行查询。 这会减慢你的应用程序启动,但你的第一个真正的查询会更快。