Когда я добавляю LIMIT 1 к запросу MySQL, останавливает ли он поиск после того, как находит 1 результат (что ускоряет его), или он по-прежнему получает все результаты и обрезает их в конце?
mysql
optimization
limit
Логан Серман
источник
источник
UNIQUE
(илиPRIMARY KEY
) ограничение (или индекс) на столбец фильтра. stackoverflow.com/questions/8467092/…Ответы:
В зависимости от запроса добавление предложения limit может иметь огромное влияние на производительность. Если вам нужна только одна строка (или вы точно знаете, что только одна строка может удовлетворить запрос) и не уверены в том, как внутренний оптимизатор выполнит ее (например, предложение WHERE не попадает в индекс и т. Д.), Тогда вам обязательно нужно добавить предложение LIMIT.
Что касается оптимизированных запросов (с использованием индексов в небольших таблицах), это, вероятно, не будет иметь большого значения для производительности, но опять же - если вас интересует только одна строка, чем независимо от того, добавьте предложение LIMIT.
источник
Ограничение может повлиять на производительность запроса (см. Комментарии и ссылку ниже), а также уменьшает набор результатов, выводимый MySQL. Для запроса, в котором вы ожидаете единственного результата, есть преимущества.
Кроме того, ограничение набора результатов может фактически ускорить общее время запроса, поскольку при передаче больших наборов результатов используется память и потенциально создаются временные таблицы на диске. Я упоминал об этом, когда недавно увидел приложение, которое не использовало лимит уничтожения сервера из-за огромных наборов результатов и с установленным лимитом, использование ресурсов резко упало.
Посетите эту страницу для получения более подробной информации: Документация MySQL: Оптимизация LIMIT
источник
Если возвращается только 1 результат, то нет, LIMIT не ускорит его. Если результатов много, и вам нужен только первый результат, и нет операторов GROUP или ORDER by, тогда LIMIT сделает это быстрее.
источник
Короче говоря, да. Если вы ограничите свой результат до 1, тогда, даже если вы «ожидаете» одного результата, запрос будет быстрее, потому что ваша база данных не будет просматривать все ваши записи. Он просто остановится, как только найдет запись, соответствующую вашему запросу.
источник
Если вы действительно ожидаете только одного результата, действительно имеет смысл добавить LIMIT к вашему запросу. Я не знаю, как работает MySQL, но уверен, что он не соберет результирующий набор из более чем 100 000 записей, чтобы просто усечь его до 1 в конце ..
источник