Я пользуюсь InnoDB. Мне нужно запросить, чтобы получить 10 записей из таблицы - это любой порядок.Можно ли использовать LIMIT без ORDER BY
Можно ли использовать LIMIT без заказа? Было бы быстрее?
Я пользуюсь InnoDB. Мне нужно запросить, чтобы получить 10 записей из таблицы - это любой порядок.Можно ли использовать LIMIT без ORDER BY
Можно ли использовать LIMIT без заказа? Было бы быстрее?
Если вы не используете ORDER BY, то вы не сортируют ваши записи, поэтому он, безусловно, сделает ваш поиск данных быстрее. Поэтому, если вы просто используете LIMIT, это будет быстрее по сравнению с данными, полученными через ORDER BY. Но обратите внимание, что в этом случае тогда случай будет не в любом порядке.
Что касается безопасности, я не уверен, о какой безопасности вы думаете, так как нет никакого потенциального вреда в запросе, который использует только LIMIT и не использует предложение ORDER BY.
Вы также можете посмотреть на статью: ORDER BY … LIMIT Performance Optimization
Да, вы можете и да, это было бы быстрее (при условии, что заказ не имеет значения для вас). order by
требует сортировки. Это означает, что база данных должна делать больше работы, чтобы получить результат. Чаще всего limit
используется с order by
так хотите поставить некоторые упорядочивания ограничения на , которые 10 записей вы получите (скажем самый последний, самый высокий ранг какой-то, и т.д.)
Это зависит, что вы считаете, как обеспечить при, если вы хотите, последовательный результат (meanning, получая тот же результат каждый раз до тех пор, как и содержимое таблицы не изменится), или если вам нужен конкретный результат (большие, самые новые, самые старые, любые) - чем это требует порядка. Если по безопасности вам мешает, что запрос не раздавится, и вы не заботитесь о том, какие результаты X вы получите, чем да, использование лимита прекрасное (это фактически автоматически выполняется многими инструментами sql, такими как workbench mysql, чтобы ускорить работу).
С точки зрения Скорость- сделает расточитель без того, по двум причинам:
limit 10
будут работать быстрее, чем limit 100000
на больших таблицах. Когда вы используете заказ, сервер должен пройти весь результат, поэтому остановка не может быть посередине.Так что да, используя предел без того будет делать это быстрее
В 3 ответов до сих пор хороши. Но они не совсем правильны.
В отличие от других ответов, иногда выходя из ORDER BY
будет не сделать это быстрее. Возможно, оптимизатор может генерировать строки в этом порядке. Примеры:
GROUP BY
обычно заказывает результаты. Итак, если ORDER BY
будет соответствовать GROUP BY
, никаких дополнительных усилий не будет.ORDER BY the_primary_key
может соответствовать порядку выборки. Это почти гарантировано для InnoDB без предложения WHERE
.«Безопасный» не вычисляет.
вы можете использовать ограничение без заказа. какой тип safty вы хотите? –