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:
- Sua tabela é organizada por índice e
FIELD
é a parte principal de sua chave primária. - 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;