2013-06-12 2 views

ответ

11

NO default "sort" order. Строки в реляционной таблице не отсортированы.

Единственный (на самом деле: единственный) способ получить определенный порядок заключается в использовании ORDER BY

Независимо от того, вы видите при запуске SELECT без ORDER BY является чисто совпадающим и может меняться со следующим выполнением.

Порядок может меняться из-за различных причин:

  • другие сеансы работает тот же оператор
  • таблица была обновлена ​​
  • план выполнения изменений
  • ...

Вот немного SQLFiddle, который показывает вам, как «порядок» может измениться: http://sqlfiddle.com/#!4/19d14/2

Обратите внимание, что первоначальный «заказ» не совпадает с порядком размещения!

+0

Это может измениться? Я на самом деле никогда не видел изменений в первых нескольких записях, они всегда одни и те же ...? –

+7

@ FlorianMüller - каждый день, когда я езжу на работу, я вижу синий автомобиль, а затем красный автомобиль, а затем зеленый автомобиль. По какой-то причине это дает мне право ожидать, что это должно всегда происходить? Или это просто совпадение, а не то, на что я должен полагаться всегда быть правдой? –

+0

@ FlorianMüller: см. Пример SQLFiddle. –

1

Как правило, существует NO порядок сортировки, если не указано иное.

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

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

+0

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

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