MySQL LIMIT COUNT() - проверка наличия хотя бы одной строки - оптимальный способ
Primary tabs
Forums:
Проблема
Дело в том, что если мы просто пытаетесь подсчитать строки с помощью формата типа:
SELECT * FROM your_table WHERE ... LIMIT 1
Мы получим полное число строк, которое есть в базе - то есть они будут найдены все, и подсчитаны,
так как LIMIT просто ограничивает число строк в итоговой выборке, ДО ТОГО как будет запущен count().
Оптимальная проверка
Чтобы не выбирать все строки, используйте, например:
SELECT EXISTS( SELECT 1 FROM your_table WHERE .... LIMIT 1 limit 1)
такой запрос вернёт 0 или 1.
Как мы видим, используется подзапрос, но это очень простой подзапрос, который извлекает единственную строку, благодаря ограничению LIMIT.
Ещё один способ - с использованием исключительно COUNT() (без EXISTS), можно написать так:
SELECT COUNT(*) rows_count FROM ( SELECT 1 FROM your_table WHERE .... LIMIT 1 ) as limit_rows
Значение получим под псевдонимом rows_count, а limit_rows - псевдоним выборки подзапроса (можно использовать и другой псевдоним).
- Log in to post comments
- 3804 reads