Standaard zijn alle indexen in Oracle niet geclusterd. De enige geclusterde indexen in Oracle zijn de Index-Organized Tables (IOT) primaire sleutelindexen.
U kunt bepalen of een tabel een IOT is door te kijken naar de IOT_TYPE
kolom in de ALL_TABLES
bekijken (de primaire sleutel kan worden bepaald door de ALL_CONSTRAINTS
op te vragen en ALL_CONS_COLUMNS
weergaven).
Hier volgen enkele redenen waarom uw zoekopdracht geordende rijen kan opleveren:
- Uw tabel is geïndexeerd en
FIELD
is het leidende deel van zijn primaire sleutel. - Uw tabel is geordend in een hoop, maar de rijen zijn per toeval geordend op
FIELD
, dit gebeurt soms in een oplopende identiteitskolom.
Geval 2 retourneert alleen bij toeval gesorteerde rijen. De volgorde van de inserts is niet gegarandeerd, bovendien staat het Oracle vrij om oude blokken opnieuw te gebruiken als er in de toekomst ruimte over is, waardoor de fragiele volgorde wordt verstoord.
Geval 1 zal meestal geordende rijen retourneren, maar u moet er niet op vertrouwen, aangezien de volgorde van de geretourneerde rijen afhankelijk is van het algoritme van het toegangspad dat in de toekomst kan veranderen (of als u de DB-parameter wijzigt, vooral parallellisme ).
Als u geordende rijen wilt, moet u in beide gevallen een ORDER BY-component opgeven:
SELECT field
FROM (SELECT field
FROM TABLE
ORDER BY field)
WHERE rownum <= 100;