sql >> Base de Datos >  >> RDS >> Oracle

INSERTAR con PEDIDO en Oracle

Puedes no controlar de manera confiable en qué orden Oracle recupera la fila de una tabla sin un ORDER BY .

Además, sin el /*+APPEND*/ Sugerencia, Oracle almacenará las filas físicamente en una tabla de montón donde haya espacio, ¡que puede no estar al final de la tabla! Puede pensar que Oracle los inserta secuencialmente, pero cualquier DML o actividad concurrente (inserción de más de 2 sesiones) podría producir una organización física diferente.

Puede usar una tabla ORGANIZADA POR ÍNDICE para almacenar las filas en el orden del PK. La mayoría de las consultas simples a partir de entonces en esa tabla producirán un conjunto ordenado de filas. Sin embargo, esto no garantizaría que Oracle seleccionará las filas en ese orden si no especifica un ORDEN POR (dependiendo de la consulta y la ruta de acceso, las filas pueden venir en cualquier orden).

También puede usar una vista con orden por, esta es probablemente su mejor opción si no puede tocar la aplicación (cambie el nombre de la tabla, cree una vista con el nombre de la tabla, deje que la aplicación crea que consulta la tabla). No sé si es factible en tu caso.