Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Um índice é clusterizado ou não clusterizado no Oracle?


Por padrão, todos os índices no Oracle não são agrupados. Os únicos índices clusterizados no Oracle são os índices de chave primária de tabelas organizadas por índice (IOT).

Você pode determinar se uma tabela é uma IOT observando o IOT_TYPE coluna em ALL_TABLES view (sua chave primária pode ser determinada consultando o ALL_CONSTRAINTS e ALL_CONS_COLUMNS Visualizações).

Aqui estão alguns motivos pelos quais sua consulta pode retornar linhas ordenadas:
  1. Sua tabela é organizada por índice e FIELD é a parte principal de sua chave primária.
  2. Sua tabela é organizada por heap, mas as linhas são ordenadas por acaso por FIELD , isso acontece às vezes em uma coluna de identidade de incremento.

O caso 2 retornará linhas classificadas apenas por acaso. A ordem das inserções não é garantida, além disso, a Oracle é livre para reutilizar blocos antigos se algum deles tiver espaço disponível no futuro, interrompendo o ordenamento frágil.

O caso 1 retornará na maioria das vezes linhas ordenadas, porém você não deve confiar nele, pois a ordem das linhas retornadas depende do algoritmo do caminho de acesso que pode mudar no futuro (ou se você alterar o parâmetro do banco de dados, especialmente o paralelismo ).

Em ambos os casos, se você deseja linhas ordenadas, deve fornecer uma cláusula ORDER BY:
SELECT field 
  FROM (SELECT field 
          FROM TABLE 
         ORDER BY field) 
 WHERE rownum <= 100;