当前位置: 首页 > 面试题库 >

MySQL分页没有双重查询?

帅锦
2023-03-14
问题内容

我想知道是否有一种方法可以从MySQL查询中获取结果数量,并同时限制结果。

分页的工作方式(据我了解),首先我要做的是

query = SELECT COUNT(*) FROM `table` WHERE `some_condition`

得到num_rows(query)之后,我得到了结果数。但是为了实际限制结果,我必须执行第二个查询,例如:

query2 = SELECT COUNT(*) FROM `table` WHERE `some_condition` LIMIT 0, 10

我的问题:无论是要检索要给出的结果总数,还是要限制单个查询中返回的结果?或更有效的方法。谢谢!


问题答案:

不,这就是要分页的应用程序必须要做的事。它是可靠且防弹的,尽管它使查询两次。但是您可以将计数缓存几秒钟,这会很有帮助。

另一种方法是使用SQL_CALC_FOUND_ROWS子句,然后调用SELECT FOUND_ROWS()。除了必须FOUND_ROWS()随后进行调用之外,还有一个问题:MySQL中有一个bug,它会影响ORDER BY查询,使其在大表上比两个查询的幼稚方法慢得多。



 类似资料:
  • 这更像是一个概念澄清。我可以使用Boto3通过使用上一个响应的LastEvaluatedKey重复查询找到实际计数。 我想计算符合dynamoDb中特定条件的项目。我使用的是“select=count”,根据文档[1],它应该只返回匹配项的计数,并且我假设响应不会分页。 计数-返回匹配项的数量,而不是匹配项本身。 当我通过AWS-cli尝试时,我的假设似乎是正确的(就像文档[1]中的其他api样本

  • 题目描述 MySQL多对多查询,没有中间表 题目来源及自己的思路 a,b两表通过cid连接,但是cid在a,b两表都不唯一。关联查询会产生笛卡尔积. 现要求通过b的条件关联查询a的字段 现在自己设计了一种思路。 相关代码 select a.字段 from a where a.cid in (select b.cid from b where b.id = #{}) 你期待的结果是什么?实际看到的错

  • 问题内容: 我有一个必须在用户界面上显示的双精度值。现在的条件是double的十进制值= 0,例如。-14.0在这种情况下,我必须仅在UI上显示14。另外,此处字符的最大限制为5。 例如:-12.34整数值不能大于2位,所以double的十进制值也不能大于2位。 最好的方法是什么? 问题答案: 你可以做 检查是否整体。

  • 使用数据库的应用程序,多数情况下都需要使用 “分页” 这个功能。尤其是在 Web 应用程序中,后端的分页查询尤其的普遍。 在以往的使用经验中,一个分页查询,除了能获取到一个列表外,我们通常需要如下几个信息才能在客户端显示出一个完整的翻页条。 当前页数 -- 第几页 页大小 -- 每页有多少条记录 总页数 -- 一共多少页 总记录数 -- 如果不分页,一共有多少条记录 当我们获得了这四条信息后,对于

  • limt 分页查询 查询前3条记录 分页公式: (offset - 1) * limit SELECT name FROM `student` LIMIT 0, 3; Student.findAll( { attributes:['name'], // 当前页 offset:0, // 每页显示的条数 limit:3 }) 分页案例 router.ge

  • 在使用 hyperf/database 来查询数据时,可以很方便的通过与 hyperf/paginator 组件配合便捷地对查询结果进行分页。 使用方法 在您通过 查询构造器 或 模型 查询数据时,可以通过 paginate 方法来处理分页,该方法会自动根据用户正在查看的页面来设置限制和偏移量,默认情况下,通过当前 HTTP 请求所带的 page 参数的值来检测当前的页数: 由于 Hyperf 当