gpt4 book ai didi

java - 在进行实际搜索之前计算行数

转载 作者:行者123 更新时间:2023-12-02 07:40:44 26 4
gpt4 key购买 nike

给定一个具有多个(例如 5 个)不同搜索屏幕的 Web 应用程序(Java、Spring、Hibernate 和 Sybase 作为数据库),我想首先计算基于用户条件的搜索结果是否超出限制(例如 1000 行) 。即使用户提供合理的过滤器和标准,也可能会出现超过 1000 个的巨大结果。

建议这样做:

  1. 从表 --clauses 等中选择 count(*)
  2. 如果 > 1000,则不进行实际搜索,返回并显示限制错误(告诉用户优化搜索)
  3. else if < 1000,进行实际搜索并将结果集返回给用户

或者有更好的解决方案来处理这个问题吗?

如果这是要走的路,我的后续问题是,我们如何避免重复 sql 查询?因为我知道这样做,所以需要我声明相同的搜索 sql,除了 select 子句仅包含 count(*)。

更新

此外,我想避免两件事:1.从执行实际sql开始处理2. ORM(本例中为 Hibernate)加载/映射域对象*当我检测到计数 > 1000 时,1 和 2 都会被避免。

最佳答案

我根本不会运行 COUNT(*),只是使用 LIMIT 1001 运行查询。您很可能在计数中生成完全相同的结果集(即,要执行 COUNT,您必须生成结果集),并且下一次命中将来自缓存,或者最坏的情况是您必须重新计算。你只是做了两次同样的工作

关于java - 在进行实际搜索之前计算行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642975/

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