Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy indeks jest klastrowany czy nieklastrowany w Oracle?

Domyślnie wszystkie indeksy w Oracle są nieklastrowane. Jedynymi indeksami klastrowymi w Oracle są indeksy klucza podstawowego IOT (Index-Organized Tables).

Możesz określić, czy tabela jest IOT, patrząc na IOT_TYPE kolumna w ALL_TABLES widok (jego klucz podstawowy można określić, wysyłając zapytanie do ALL_CONSTRAINTS i ALL_CONS_COLUMNS widoki).

Oto kilka powodów, dla których zapytanie może zwrócić uporządkowane wiersze:

  1. Twoja tabela jest zorganizowana według indeksu i FIELD jest wiodącą częścią jego klucza podstawowego.
  2. Twoja tabela jest zorganizowana na stercie, ale wiersze są przypadkowo uporządkowane według FIELD , zdarza się to czasami na rosnącej kolumnie tożsamości.

Przypadek 2 zwróci posortowane wiersze tylko przez przypadek. Kolejność wstawek nie jest gwarantowana, ponadto Oracle może ponownie wykorzystać stare bloki, jeśli niektóre z nich będą miały dostępną przestrzeń w przyszłości, zakłócając delikatną kolejność.

Przypadek 1 w większości przypadków zwróci uporządkowane wiersze, jednak nie powinieneś na nim polegać ponieważ kolejnośćzwracanych wierszy zależy od algorytmuścieżki dostępu, który może ulec zmianie w przyszłości (lub jeśli zmienisz parametr DB, szczególnie równoległość ).

W obu przypadkach, jeśli chcesz uporządkować wiersze, powinieneś podać klauzulę ORDER BY:

SELECT field 
  FROM (SELECT field 
          FROM TABLE 
         ORDER BY field) 
 WHERE rownum <= 100;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyodrębnij dane z XML Clob za pomocą SQL z bazy danych Oracle

  2. java.sql.SQLException:Niepowodzenie konwersji na reprezentację wewnętrzną:podczas przekazywania ArrayList do Oracle.sql.ARRAY

  3. Wstaw do tabeli z kolekcji typu oracle 12c - ORA-00902:nieprawidłowy typ danych

  4. Jak mogę użyć wyrażenia regularnego do podzielenia ciągu, używając ciągu jako separatora?

  5. Czy operator IN może używać symboli wieloznacznych LIKE (%) w Oracle?