Som standard är alla index i Oracle oklustrade. De enda klustrade indexen i Oracle är de primära nyckelindexen för Index-Organized tables (IOT).
Du kan avgöra om en tabell är en IOT genom att titta på IOT_TYPE
kolumnen i ALL_TABLES
vy (dess primärnyckel kan bestämmas genom att fråga ALL_CONSTRAINTS
och ALL_CONS_COLUMNS
visningar).
Här är några anledningar till varför din fråga kan returnera ordnade rader:
- Din tabell är indexorganiserad och
FIELD
är den ledande delen av dess primära nyckel. - Din tabell är högorganiserad men raderna är av en slump ordnade efter
FIELD
, detta händer ibland i en ökande identitetskolumn.
Fall 2 returnerar sorterade rader endast av en slump. Ordningen på insatserna är inte garanterad, dessutom är Oracle fritt att återanvända gamla block om några råkar ha tillgängligt utrymme i framtiden, vilket stör den ömtåliga beställningen.
Fall 1 kommer för det mesta att returnera ordnade rader, men du bör inte lita på det eftersom ordningen på raderna som returneras beror på algoritmen för åtkomstvägen som kan ändras i framtiden (eller om du ändrar DB-parameter, särskilt parallellism ).
I båda fallen om du vill ha ordnade rader ska du ange en ORDER BY-sats:
SELECT field
FROM (SELECT field
FROM TABLE
ORDER BY field)
WHERE rownum <= 100;