Подтвердить что ты не робот

Когда не указывается "Order by", какой порядок выбирает запрос для вашего набора записей?

У меня всегда складывалось впечатление, что запрос без определенного правила "упорядочить по" будет заказывать это по результатам тем, что было указано в вашем предложении where.

Например, мое предложение where:

WHERE RESULTS_I_AM_SEARCHING_FOR IN
ITEM 1
ITEM 2
ITEM 3

Я бы предположил, что результаты, возвращаемые для пунктов 1, 2 и 3, будут в порядке, указанном в том месте, однако это не так. Кто-нибудь знает, какой порядок он сортирует, когда не указано?

Спасибо и извините за действительно основной вопрос!

Дэймон

4b9b3361

Ответ 1

Если вы не укажете ORDER BY, значит, ORDER не определен.

Результаты могут быть возвращены в произвольном порядке - и это может измениться со временем.

В реляционной базе данных нет "естественного порядка" или чего-либо подобного (по крайней мере, во всем, что я знаю). Единственный способ получить надежный порядок - явное указание предложения ORDER BY.

Обновление: для тех, кто все еще не верит мне - вот два отличных сообщения в блоге, которые иллюстрируют этот момент (с примерами кода!):

Ответ 2

В SQL Server, если не указано ORDER BY, результаты возвращаются в быстрее всего.

Поэтому без ORDER BY, не делать никаких предположений о порядке.

Ответ 3

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

http://exacthelp.blogspot.co.uk/2012/10/default-order-of-select-statement-in.html