Я вижу, что люди пишут SQL-запрос, например,
select count(*)
from xxx_table
where yyy='abc'
limit 0
интересно, что означает здесь предел 0? Направлял некоторые документы и дискуссии и все еще чувствовал себя в замешательстве.
Я вижу, что люди пишут SQL-запрос, например,
select count(*)
from xxx_table
where yyy='abc'
limit 0
интересно, что означает здесь предел 0? Направлял некоторые документы и дискуссии и все еще чувствовал себя в замешательстве.
Я думаю, что это только для разбора запроса.
В простом подходе Шаги выполнения запроса:
Как Документы MySQL:
LIMIT 0 быстро возвращает пустой набор. Это может быть полезно для проверки достоверности запроса. Он также может использоваться для получения типов столбцов результатов, если вы используете API MySQL, который позволяет получать метаданные набора результатов.
Наконец-то я нашел кое-что знающее, когда я создал демо для вас, используйте ниже упомянутый скрипт, чтобы проверить план выполнения при сравнении с лимитом 0 и 1.
http://sqlfiddle.com/#!9/82a8f0/5
То, что я видел, заключается в том, что при выполнении, если мы используем Limit 0, чем его не принимая во внимание Table.check мой sqlfiddle, упомянутый выше.
Примечание. Я создал только простую таблицу, чтобы проверить разницу в плане исполнения в демонстрации.
LIMIT Предложение используется в MYSQL, чтобы возвращать никакие строки в выводе то же самое как TOP в разделе SQL SERVER и ROWNUM в ORACLE.
например.
SELECT *
FROM Persons
LIMIT 5;
SELECT TOP 2 * FROM Persons;
SELECT *
FROM Persons
WHERE ROWNUM <=5;
Запуск объяснения перед оператором с и без ограничения 0 дает разные результаты:
с лимитом 0
"1" "SIMPLE" \N \N \N \N \N \N \N "Impossible WHERE"
без
"1" "SIMPLE" "{tableName}" "index" \N "{someFoundKey}" "{keyLength}" \N "{rowCount}" "Using index"
(\n - мой вывод sql gui для нуля)
Вывод - как уже говорили другие, скорость обоснованности кажется хорошей догадкой. Это может быть более очевидно при более сложном запросе с объединениями, объединениями, пересечениями и т.д.