Mysql数量上限(*)

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时运行速度要快得多.

有没有办法更快地做到这一点?

Joo*_*gen 0

可能有助于更好地利用值范围限制。

select count(*) - (select count(*) from t where something <= 123) as cnt
from t
Run Code Online (Sandbox Code Playgroud)

另一件事可能是更新触发计数。