Когда целесообразно добавить LIMIT 1 в конце запроса в MySQL. Обычно я добавляю его в DELETE, но я видел, что он используется с INSERT a и даже UPDATE. Это перебор или хорошая практика?
Использование LIMIT 1 в MySQL
Ответ 1
Хорошо, если вы используете EXPLAIN, вы увидите, что он ускоряет работу, так как как только он нашел один результат, он останавливается.
Он также является отказоустойчивым - если вы знаете, что ваша вставка обновления должна влиять только на одну строку, указав ее, вы гарантируете, что она никогда не пойдет не так и испортит несколько строк.
Ответ 2
INSERT INTO .. VALUES () LIMIT 1
Не существует. Надеюсь, вы знаете, сколько VALUES() вы там положили!
INSERT INTO .. SELECT ... LIMIT 1
Существует и очень полезен, и отключен от темы, поскольку LIMIT находится на SELECT.
DELETE ... LIMIT 1
UPDATE ... LIMIT 1
Чрезвычайно редко полезно. Либо вы знаете свою базу данных достаточно, чтобы быть уверенным, что ваш WHERE соответствует условию UNIQUE, либо нет, и в этом случае вам следует потратить немного больше времени на поиск своей базы данных и изучение SQL.
Но...
UPDATE jobs SET owner=me WHERE owner IS NULL ORDER BY job_submit_time LIMIT 1
Может быть очень полезно! Это создает почти незанятую очередь заданий, в которой вы можете прийти и выполнить задание из очереди без каких-либо ожиданий, блокировки или разрешения конфликтов. Совершенно отлично.
DELETE FROM cache ORDER BY last_update_time LIMIT N
Кэш занимает слишком много места? Очистите N самых старых строк...
Ответ 3
Я не могу придумать экземпляр, в котором что-то, что ускоряет запрос и делает его более безопасным в одно и то же время, можно назвать overkill. Я поставлю свой голос в колонке хорошей практики.
Ответ 4
Чрезвычайно редко полезно. Либо вы знаете свою базу данных достаточно, чтобы быть уверенным, что ваш WHERE соответствует условию UNIQUE, либо вы этого не сделаете, и в этом случае вы должны потратить немного больше времени на поиск своей базы данных и изучение SQL
Существуют случаи, когда предел 1 ДЕЙСТВИТЕЛЬНО полезен. Например, таблица без уникального ключа. Если у нас есть пять одинаковых значений, тогда будет действовать ограничение на один.