2013-12-19 4 views
3

Например у меня есть этот запросДолжен ли я устанавливать предел при поиске уникальных индексов?

SELECT * FROM `table` WHERE `id` = '5123'

В этом запросе он будет искать все результаты, которые имеют идентификатор 5123. Но я только хочу 1 строки, возвращенной, так что я мог бы добавить LIMIT 1 к запросу.

Но скажем, что id является уникальным индексом, будет ли он продолжать поиск результатов после его поиска?

+0

Обычно ваш идентификатор является первичным ключом, а затем автоматически является уникальным идентификатором. нет необходимости в лимите. – devanand

ответ

4

No.

Одна из вещей, индексы делают именно то, что вы предлагаете:

MySQL использует индексы для этих операций:

  • Чтобы найти строки, соответствующие ИНЕКЕ быстро ,
  • Исключить строки из соображений. Если есть выбор между несколькими индексами, MySQL обычно использует индекс, который находит наименьшее количество строк (самый избирательный индекс).

От http://dev.mysql.com/doc/refman/5.6/en/mysql-indexes.html

0

Больше статей вы имеете в запросе больше нагрузки он помещает на сервере, если он имеет уникальное ограничение, определенное на этой колонке, то там не шанс дублей в этой колонке Я бы лично избегал использования LIMIT.

0

Возможно.

Это зависит от плана выполнения.

Если в таблице есть только несколько строк, оптимизатор может решить выполнить полное сканирование таблицы. Но не беспокойтесь, он никогда не вернет больше одной строки, если столбец ID уникален.

Вы не должны добавлять LIMIT 1 к вашему запросу. Если вы не видите, что запрос выполняется очень медленно, вы должны доверять оптимизатору.

0

Если id определен как первичный ключ, тогда я бы не использовал пункт limit.

Если id просто имеет уникальный индекс, тогда я был бы склонен сохранять условие limit, чтобы быть уверенным, что код не вызывает ошибку.

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

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

С точки зрения производительности использование limit не должно иметь значения.

Смежные вопросы