MySQL LIMIT COUNT() - проверка наличия хотя бы одной строки - оптимальный способ

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 - псевдоним выборки подзапроса (можно использовать и другой псевдоним).