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