我有一个大型数据库,为了避免每次都获取查询的所有结果,我使用了LIMIT(这不是必须的)。我需要计算结果的数量。最愚蠢的解决方案是下面这个,它起作用了:
我们只需要得到我们需要的数据:
SELECT * FROM table_name WHERE param > 3 LIMIT 10
然后我们求出长度:
SELECT COUNT(1) FROM table_name WHERE param > 3 LIMIT 10
但是这个解决方案让我感到很困扰,因为与所讨论的查询不同,我使用的查询很复杂,您基本上必须运行它两次才能获得结果。
对我来说,另一个愚蠢的解决方案是:
SELECT COUNT(1), param, anotherparam, additionalparam FROM table_name WHERE param > 3 LIMIT 10
但是这只会导致一行。在这一点上,我将是确定的,如果它只会填补计数行与相同的数字,我只需要这些信息,而不浪费计算时间。
有没有更好的方法来实现这一目标?
顺便说一句,我不希望得到10作为COUNT
的结果,我需要的长度没有LIMIT
。
1条答案
按热度按时间abithluo1#
这个问题非常类似于:How can I count the numbers of rows that a MySQL query returned?
另请参阅:https://mariadb.com/kb/en/found_rows/
这可能是解决您的问题的最有效的解决方案,但最好使用EXPLAIN对大小合理的数据集进行测试。