【问题标题】:What is the fastest way to count the number of MySql rows left after a limited results query计算有限结果查询后剩余的 MySql 行数的最快方法是什么
【发布时间】:2023-01-13 00:09:26
【问题描述】:

如果我有一个 mysql 限制查询:

SELECT * FROM my_table WHERE date > '2020-12-12' LIMIT 1,16;

有没有更快的方法来检查并查看在我的限制之后还剩下多少结果?

我试图做一个有限制的计数,但那没有用,即

SELECT count(ID) AS count FROM my_table WHERE date > '2020-12-12' LIMIT 16,32;

这里的最终目标只是确定在当前结果集之外是否还有任何其他行,因此如果有另一种更快的方法来执行此操作,那也很好。

【问题讨论】:

  • 它是否需要是一个 MySQL 命令,或者你是否可以做一个简单的存储过程,如果你这样做,然后 IF/Then 检查数组的 UBOUND,然后让它决定做一件事(当它在限制下时的默认事情) 并使用 ELSE 超出您设定的限制来做其他事情,例如创建另一个选择来执行反向操作以查找排除的记录。
  • 我可能没有考虑到这一点,但您不能只使用 SELECT count(ID) - 32 AS count FROM my_table WHERE date > '2020-12-12'; 来减去您已经检索到的结果数吗?
  • @yoniLavi 你想多了是我想多了。如此明显。

标签: mysql


【解决方案1】:

最好通过计算行数来做到这一点:

SELECT count(*) AS count FROM my_table WHERE date > '2020-12-12'

这告诉您有多少行符合条件。然后,您可以将其与使用 LIMIT 查询获得的结果大小进行比较。这只是算术。

过去版本的 MySQL 有一个函数 FOUND_ROWS(),如果您不使用 LIMIT,它会报告有多少行匹配。但事实证明这有更差性能优于运行两个查询,一个用于计算行数,一个用于执行限制。所以他们弃用了这个功能。

详情请阅读:

【讨论】:

  • 是的,我完全没有考虑只计算总数减去当前结果集。 :(
猜你喜欢
  • 1970-01-01
  • 2013-03-17
  • 2013-01-23
  • 1970-01-01
  • 2023-03-13
  • 2012-07-27
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多