我正在用JPA创建一个简单的Spring Boot应用程序。我有数百万条记录,可以从数据库中检索它。在我的存储库中,当我调用findAll(Pageable pageable)
时,它将获取我想要的记录。
但是需要很多时间才能将记录的子集退还给我。我发现这是由于count
查询引起的。
有没有一种方法可以在第一次调用后缓存page
响应?
答案 0 :(得分:-1)
很容易看出为什么计数要比选择花费更多的时间,因为选择通常有限制,但是选择计数可能需要全表扫描。
在jpa中不支持缓存page
,因为数据一直在变化。
如果只想显示数据(不需要支持其他过滤显示),则可以缓存count
而不使用findAll(Pageable pageable)
,则需要查询数据(使用本机查询),组装一个Page
对象并将其返回到前端。
当然,您需要在count
时更新insert/delete
。
也许您不需要支持显示确切的页面,或者可以使用其他类型的数据库,例如Elasticsearch
?
福尔摩(Futhermore):请参见:link可能会有帮助?