Оператор SELECT с COUNT возвращает количество строк, извлеченных оператором SELECT.
По соображениям производительности желаемый результат заключается в ограничении этого количества.Включение предложения LIMIT в инструкцию SELECT не будет работать, поскольку оно ограничивает только количество возвращаемых строк, которое всегда равно единице.
Решение, которое я называю «Limited-Count», достигается путем ограничения-count оператор SELECT и перенос его в COUNT (*).
Например: если ваш оператор подсчета выглядит как
select count(*) from registrations where (selectedtime IS NULL AND expirationtime < NOW()) LIMIT 3500;
Вы можете ограничить результаты, заменив запрос на:
SELECT COUNT(*) AS total
FROM (
SELECT 1
FROM registrations
WHERE selectedtime IS NULL AND expirationtime < NOW()
LIMIT 3500) AS x
Если вам нужно знать, сколько строк вернул бы ваш оператор SELECT без учета без LIMIT, вы можете использовать информационную функцию FOUND_ROWS ().Он извлечет общее количество строк без повторного выполнения оператора.