sql - 在 SQLite 中实现查询缓存

标签 sql database sqlite query-cache

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/

相关文章:

Android:直接从 SQLite 数据库填充 ListView - 不使用 ArrayList

sql - Oracle 分页查询中的列无效?

sql - 如何解密SQL Server 2008中的存储过程

mysql - SQL - 通过搜索与金额相关的另一个值来添加总计

database - GAE数据存储同时更新记录的字段

sql-server - 如何解决 SQL Server 错误 1222 即解锁 SQL Server 表

c# - 在 Entity Framework 中重复创建和删除数据库

c# - 从sql中解析对象

php - 如何调用带参数的php url并在SQLite3上的SQL查询中使用它们(引号…)?

mysql - 从本地主机重命名为服务器后我可以上传数据库吗?