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

INSERT com ORDER no Oracle


Você pode não controlar de forma confiável em que ordem o Oracle recupera a linha de uma tabela sem um ORDER BY .

Além disso, sem o /*+APPEND*/ dica, o Oracle armazenará as linhas fisicamente em uma tabela heap onde houver espaço, que pode não estar no final da tabela! Você pode pensar que o Oracle os insere sequencialmente, mas qualquer DML ou atividade simultânea (inserção de mais de 2 sessões) pode produzir uma organização física diferente.

Você pode usar uma tabela INDEX ORGANIZED para armazenar as linhas na ordem do PK. A maioria das consultas simples depois dessa tabela produzirá um conjunto ordenado de linhas. No entanto, isso não garante que a Oracle selecione as linhas nessa ordem se você não especificar um ORDER BY (dependendo da consulta e do caminho de acesso, as linhas podem vir em qualquer ordem).

Você também pode usar uma visão com um pedido por, esta é provavelmente sua melhor aposta se você não puder tocar no aplicativo (renomeie a tabela, crie uma visão com o nome da tabela, deixe o aplicativo pensar que consulta a tabela). Não sei se é viável no seu caso.