sql >> Databasteknik >  >> RDS >> Oracle

Är ett index klustrat eller oklustrat i Oracle?

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:

  1. Din tabell är indexorganiserad och FIELD är den ledande delen av dess primära nyckel.
  2. 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;


  1. Databassäkerhet i Oracle

  2. hitta den närmaste platsen efter latitud och longitud i postgresql

  3. Att skicka en array av arrayer som parameter till en funktion

  4. hur man får array_agg() att fungera som group_concat() från mySQL