一尘不染

MySQL分页没有双重查询?

mysql

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

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

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

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

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

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


阅读 288

收藏
2020-05-17

共1个答案

一尘不染

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

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

2020-05-17