【发布时间】:2010-12-18 04:30:04
【问题描述】:
MySQL 中是否有办法从表中获取COUNT(*),如果该表的数字大于x,它将在那里停止计数?基本上,我只想知道从查询返回的记录数是否大于或小于特定数字。如果超过这个数字,我真的不在乎有多少行,如果更少,告诉我计数。
我已经能够像这样捏造它:
-- let x be 100
SELECT COUNT(*) FROM (
SELECT `id` FROM `myTable`
WHERE myCriteria = 1
LIMIT 100
) AS temp
...但我想知道是否有一些方便的内置方法可以做到这一点?
感谢您的建议,但我应该更清楚地了解这个问题背后的原因。它从几个连接表中进行选择,每个表都有数千万条记录。使用索引条件运行COUNT(*) 仍然需要大约 80 秒,而运行没有索引的条件大约需要 30 分钟左右。更多的是优化查询而不是获得正确的输出。
【问题讨论】:
-
恐怕在这种情况下检查 COUNT( ) > 100 或 COUNT( ) > 1000 或 COUNT( ) > 10000 不会有任何区别。
-
是的,我知道,这就是我使用 LIMIT 进行子查询的原因,我想知道是否有更好的方法
-
当我看到您的编辑/意图时,我删除了我的答案。我想你在你的问题中的答案是最优化的
标签: mysql sql database count query-optimization