gpt4 book ai didi

java - spring Pageable getTotalElements() 有多重?

转载 作者:行者123 更新时间:2023-12-02 11:41:25 27 4
gpt4 key购买 nike

如果我进行查询

  @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 行 - 不会导致崩溃吗?

最佳答案

使用返回 Page 对象的 Pageable 参数调用查询方法会生成两个查询:

  • 主查询,带有附加的 limitoffset 子句,用于检索数据
  • 以及“计数”查询。

findAllProducts 调用(而不是 getTotalElements)导致崩溃的能力取决于您的查询/数据库 optimization .

如果您不希望您的方法调用计数查询,您可以使用 Slice 而不是 Page 作为返回参数:

Slice<Product> findAllProducts(String senderId, String status, Pageable pageable);

在这种情况下,不会调用额外的计数查询。

查看更多信息reference .

关于java - spring Pageable getTotalElements() 有多重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48521418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com