如果我查询
@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);
并致电方法
Page<Product> products = findAllProducts...
products.getTotalElements()
会被称为SELECT COUNT(*)
吗?
如果1000个用户同时调用此方法并且我的查询是300 000行 - 它是否会导致崩溃?
答案 0 :(得分:1)
调用返回Pageable
对象的Page
参数的查询方法会产生两个查询:
limit
和offset
子句 findAllProducts
调用(而不是getTotalElements
)导致崩溃的能力取决于您的查询/数据库optimization。
如果您不希望自己的方法调用计数查询,则可以使用Slice
代替Page
作为返回参数:
Slice<Product> findAllProducts(String senderId, String status, Pageable pageable);
在这种情况下,不会调用额外的计数查询。
查看reference中的更多信息。