Ve výchozím nastavení jsou všechny indexy v Oracle unclustered. Jedinými seskupenými indexy v Oracle jsou indexy primárního klíče IOT (Index-Organized Tables).
Zda je tabulka IOT, můžete určit podle IOT_TYPE
ve sloupci ALL_TABLES
zobrazení (jeho primární klíč lze určit dotazem na ALL_CONSTRAINTS
a ALL_CONS_COLUMNS
zhlédnutí).
Zde je několik důvodů, proč může váš dotaz vrátit seřazené řádky:
- Vaše tabulka je uspořádána podle indexu a je
FIELD
je hlavní částí jeho primárního klíče. - Vaše tabulka je uspořádána do hromady, ale řádky jsou náhodně seřazeny podle
FIELD
, to se někdy stává ve sloupci zvyšující se identity.
Případ 2 vrátí seřazené řádky pouze náhodou. Pořadí vložek není zaručeno, navíc společnost Oracle může znovu použít staré bloky, pokud některé náhodou budou mít v budoucnu volné místo, což naruší křehké řazení.
Případ 1 většinu času vrátí uspořádané řádky, ale neměli byste na to spoléhat, protože pořadí vrácených řádků závisí na algoritmu přístupové cesty, která se může v budoucnu změnit (nebo pokud změníte parametr DB, zejména paralelismus ).
V obou případech, pokud chcete uspořádané řádky, měli byste zadat klauzuli ORDER BY:
SELECT field
FROM (SELECT field
FROM TABLE
ORDER BY field)
WHERE rownum <= 100;