Seb*_*wak 7 mysql optimization count limit
我有一个问题:
select count(*) from `table` where `something`>123
Run Code Online (Sandbox Code Playgroud)
如果表有几百万条记录,即使列上有索引,查询也会运行得很慢something.但是,事实上我对以下价值感兴趣:
min(100000, count(*))
Run Code Online (Sandbox Code Playgroud)
那么有什么方法可以防止MySQL在已经找到100k时对行进行计数?我找到了类似的东西:
select count(*) from (select 1 from `table` where `something`>123 limit 100000) as `asd`
Run Code Online (Sandbox Code Playgroud)
它比count(*)表有几百万个匹配条目count(*)快得多,但是当匹配少于100000时运行速度要快得多.
有没有办法更快地做到这一点?
可能有助于更好地利用值范围限制。
select count(*) - (select count(*) from t where something <= 123) as cnt
from t
Run Code Online (Sandbox Code Playgroud)
另一件事可能是更新触发计数。
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |