2013-03-05 2 views
0

Предположим, имеется таблица со столбцами: Id (первичный ключ), Mytime, MynameOracle Database: порядок результата запроса

и вы выполнить запрос:

select * from mytable order by myTime 

Но есть несколько записи с таким же значением в myTime. Какой порядок используется для организации результатов? Я пробовал этот пример на нескольких машинах, и результаты разные. Результаты с одинаковым значением myTime упорядочиваются по-разному в зависимости от машины (хотя обе машины используют одну и ту же версию Oracle DDBB 10g).

Спасибо.

+4

Заказ непредсказуем, как вы заметили. – Mat

+0

Оракул делает то, что вы просите: заказ by mytime. поэтому, если два значения имеют одно и то же время, вы не можете догадаться, какой из них будет отсортирован раньше или нет. Если вы хотите иметь вид, который лучше подходит вам, вам нужно что-то изменить. –

+0

Да, я также заказал его в столбце myName. –

ответ

1

Порядок будет зависеть от метода доступа к таблице и, возможно, алгоритма сортировки, но в целом (не всегда, я думаю) вы увидите, что неявный порядок сортировки будет выполняться с помощью rowid if для предоставления порядка сортировки использовался индекс. Если используется полное сканирование и сортировка, я не хотел бы догадываться.

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

+0

'неявный порядок сортировки будет по rowid' - скорее всего, нет (есть много других путей доступа, которые приведут к совершенно другим« заказам ». Заказ по ROWID - очень плохая идея - для подкачки вы должны использовать' order by 'в сочетании с' rownum' или 'row_number()' –

+0

«... по rowid, если индекс был использован для предоставления порядка сортировки», поскольку индексы упорядочивают строки одного и того же значения с помощью rowid, так что, вероятно, это будет так, как они возвращаются. В стороне упорядочение по rowid удобно только в ситуациях, когда требуется кратковременная стабильность в порядке сортировки, например, когда приложение использует детерминированный порядок сортировки для правильной разбивки на страницы. –

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