У меня есть запрос:
select count(*) from `table` where `something`>123
Если в таблице несколько миллионов записей, запрос выполняется очень медленно, хотя в столбце something
есть индекс.Однако на самом деле меня интересует значение:
min(100000, count(*))
Так есть ли способ предотвратить подсчет строк MySQL, когда он уже нашел 100k?Я нашел что-то вроде:
select count(*) from (select 1 from `table` where `something`>123 limit 100000) as `asd`
Это намного быстрее, чем count(*)
, если в таблице несколько миллионов совпадающих записей, но count(*)
работает намного быстрее, когда найдено менее 100000 совпадений.
Есть ли способ сделать это быстрее?