Добавляющий 'ПРЕДЕЛ 1' к запросам MySQL делают их быстрее, когда Вы будете знать, что только будет 1 результат?

То, что я сделал по другим ответам, было

NEWLINE=$'\n'
my_var="__between eggs and bacon__"
echo "spam${NEWLINE}eggs${my_var}bacon${NEWLINE}knight"

# which outputs:
spam
eggs__between eggs and bacon__bacon
knight
80
задан Logan Serman 18 January 2009 в 17:08
поделиться

4 ответа

В зависимости от запроса, добавляя предельный пункт может иметь огромный эффект на производительность. Если Вы хотите только одну строку (или знайте для того, что только одна строка может удовлетворить запрос), и не уверены в том, как внутренний оптимизатор выполнит его (например, оператор Where, не поражающий индекс и т.д), то необходимо определенно добавить ПРЕДЕЛЬНЫЙ пункт.

Что касается оптимизированных запросов (использующий индексы на маленьких таблицах), вероятно, не будет иметь значения очень в производительности, но снова - если Вы только будете интересоваться одной строкой, чем добавляют ПРЕДЕЛЬНЫЙ пункт независимо.

74
ответ дан Eran Galperin 5 November 2019 в 17:44
поделиться

Предел может влиять на производительность запроса (см. комментарии и ссылку ниже), и это также уменьшает набор результатов, который производится MySQL. Для запроса, в котором Вы ожидаете единственный результат, существуют преимущества.

, Кроме того, ограничивая набор результатов может на самом деле ускорить общее время запроса, поскольку передача больших наборов результатов использует память и потенциально составляет временные таблицы на диске. Я упоминаю это, поскольку я недавно видел приложение, которое не использовало предел, уничтожают сервер из-за огромных наборов результатов и с пределом на месте использование ресурса, отброшенное чрезвычайно.

Проверка эта страница для большего количества специфических особенностей: MySQL Documentation: ПРЕДЕЛЬНАЯ Оптимизация

19
ответ дан rjamestaylor 5 November 2019 в 17:44
поделиться

Если Вы действительно только ожидаете один единственный результат, действительно имеет смысл добавлять ПРЕДЕЛ Вашему запросу. Я не знаю внутренние работы MySQL, но я уверен, что он не соберет набор результатов 100'000 + записи только для усечения его назад к 1 в конце..

1
ответ дан driAn 5 November 2019 в 17:44
поделиться

Если будет только 1 результат возвращение, то не, ПРЕДЕЛ не сделает его немного быстрее. Если будет много результатов, и Вам только нужен первый результат, и нет никакой ГРУППЫ, или ПОРЯДОК операторами тогда ОГРАНИЧИВАЮТ, то сделает его быстрее.

4
ответ дан Kris Erickson 5 November 2019 в 17:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: