Per impostazione predefinita, tutti gli indici in Oracle sono non cluster. Gli unici indici cluster in Oracle sono gli indici delle chiavi primarie Index-Organized tables (IOT).
Puoi determinare se una tabella è un IOT osservando IOT_TYPE
colonna nella ALL_TABLES
view (la sua chiave primaria potrebbe essere determinata interrogando ALL_CONSTRAINTS
e ALL_CONS_COLUMNS
visualizzazioni).
Ecco alcuni motivi per cui la tua query potrebbe restituire righe ordinate:
- La tua tabella è organizzata in base all'indice e
FIELD
è la parte principale della sua chiave primaria. - La tua tabella è organizzata in heap ma le righe sono casualmente ordinate per
FIELD
, questo accade a volte su una colonna di identità in aumento.
Il caso 2 restituirà le righe ordinate solo per caso. L'ordine degli inserti non è garantito, inoltre Oracle è libera di riutilizzare i vecchi blocchi se alcuni dovessero avere spazio disponibile in futuro, interrompendo il fragile ordinamento.
Il caso 1 restituirà la maggior parte delle volte righe ordinate, tuttavia non dovresti fare affidamento su di esso poiché l'ordine delle righe restituite dipende dall'algoritmo del percorso di accesso che potrebbe cambiare in futuro (o se modifichi il parametro DB, in particolare il parallelismo ).
In entrambi i casi se vuoi righe ordinate dovresti fornire una clausola ORDER BY:
SELECT field
FROM (SELECT field
FROM TABLE
ORDER BY field)
WHERE rownum <= 100;