По умолчанию все индексы в Oracle некластеризованы.Единственными кластеризованными индексами в Oracle являются индексы первичного ключа Index-Organized таблицы (IOT).
Чтобы определить, является ли таблица IOT, просмотрите столбец IOT_TYPE
в представлении ALL_TABLES
(егоПервичный ключ может быть определен путем запроса представлений ALL_CONSTRAINTS
и ALL_CONS_COLUMNS
).
Вот несколько причин, по которым ваш запрос может возвращать упорядоченные строки:
- Ваша таблица имеет индекс-организован и
FIELD
является ведущей частью своего первичного ключа. - Ваша таблица организована в кучу, но строки случайно упорядочены по
FIELD
, иногда это происходит в возрастающем столбце идентификаторов.
Случай 2 вернет отсортированные строки только случайно.Порядок вставок не гарантируется, более того, Oracle может свободно использовать старые блоки, если в будущем у некоторых будет свободное место, что нарушит хрупкое упорядочение.
Случай 1 большую часть времени будет возвращать упорядоченные строки,однако не следует полагаться на него, поскольку порядок возвращаемых строк зависит от алгоритма пути доступа, который может измениться в будущем (или при изменении параметра БД, особенно параллелизма).
В обоих случаяхесли вы хотите упорядоченные строки, вы должны предоставить предложение ORDER BY:
SELECT field
FROM (SELECT field
FROM TABLE
ORDER BY field)
WHERE rownum <= 100;