SQLite 有查询缓存的概念吗?例如,如果我连续执行相同的查询两次:
select * from Sales1m group by territory_id;
select * from Sales1m group by territory_id;
Result: 136 rows returned in 6663ms
Result: 136 rows returned in 6745ms
即使设置了 PRAGMA cache_size=-1000
(1MB),它也花费了几乎完全相同的时间。
第二个查询是否从第一个查询中受益?如果答案是否定的,那么在客户端实现查询缓存有多困难?我想一个简单的实现可以使用查询字符串校验和和结果集(可能被压缩?),但是每当更新表时它也需要失效。
最佳答案
据我所知 SQLite 没有内置查询缓存。您必须在应用程序层添加一个,可能通过使用 ORM它提供查询缓存。
它的作用是将数据库页面缓存在内存中以便更快地检索。您可以使用 cache_size pragma 调整此缓存的大小。 。默认情况下为 2000 KB(2 兆)。尝试更大的东西。例如,20,000 kb(20 兆)。
PRAGMA <your schema>.cache_size = -20000
关于sql - 在 SQLite 中实现查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068826/