Java spring Pageable getTotalElements()有多重?
如果我提出疑问Java spring Pageable getTotalElements()有多重?,java,pagination,spring-data-jpa,Java,Pagination,Spring Data Jpa,如果我提出疑问 @Query("SELECT t FROM Product t WHERE t.isApproved = true AND t.partnerId = ?1 AND t.categories.status = ?2") Page<Product> findAllProducts(String senderId, String status, Pageable pageable); @Query(“从产品t中选择t,其中t.isApproved=true,t.
@Query("SELECT t FROM Product t WHERE t.isApproved = true AND t.partnerId = ?1 AND t.categories.status = ?2")
Page<Product> findAllProducts(String senderId, String status, Pageable pageable);
@Query(“从产品t中选择t,其中t.isApproved=true,t.partnerId=1,t.categories.status=2”)
页面findAllProducts(字符串senderId、字符串状态、可分页可分页);
和调用方法
Page<Product> products = findAllProducts...
products.getTotalElements()
Page products=findAllProducts。。。
products.getTotalElements()
它将被称为选择计数(*)
如果1000个用户同时调用此函数,而我的查询是300000行-这不会导致崩溃吗?调用带有返回
Page
对象的Pageable
参数的查询方法会生成两个查询:
- 主查询,带有附加的
和limit
子句,用于检索数据offset
- 以及“计数”查询
findAllProducts
调用(而不是getTotalElements
)导致崩溃的能力取决于您的查询/数据库
如果不希望方法调用计数查询,可以使用Slice
而不是Page
作为返回参数:
Slice<Product> findAllProducts(String senderId, String status, Pageable pageable);
切片findAllProducts(字符串senderId、字符串状态、可分页);
在这种情况下,将不会调用其他计数查询
有关详细信息,请参阅。您可以启用SQL日志记录来了解。或者您可以阅读文档:。如果这导致崩溃,那么即使没有count查询,崩溃也会发生。确保查询已优化(数据库索引等)