Conjunto de resultados de Oracle INSERT SELECT Cuando el conjunto de resultados SELECT es relativamente grande, ¿cuál es la mejor manera de hacerlo? Por ejemplo, el conjunto de resultados tiene más de 500 noches.
En diferentes situaciones, los principios para considerar la optimización son diferentes.
Si se trata de una declaración como INSERT XXXXXX SELECT xxxxx FROM
Las cosas a considerar son: Más.
Desde la perspectiva de la pregunta del autor original, se ha determinado que el problema del volumen de datos está provocando el consumo de utilización de recursos (como el caché del sistema, como los segmentos de reversión), lo que resulta en una mayor lentitud. eficiencia de ejecución de declaraciones. (Generalmente, los datos de 5 millones no son demasiados... Por supuesto, depende de la situación específica)
Si es realmente lo que supuse, le daré una idea. Haciendo caso omiso de las tablas particionadas y los índices particionados, su descripción no encaja aquí.
El primer método es crear una nueva tabla temporal para este conjunto de resultados SELECT por separado. Después de establecer un índice razonable, las operaciones posteriores se basan en esta tabla. De esta manera, se puede reducir el gran rendimiento de recursos. y el tiempo de ejecución se puede acortar. Y la operación es simple, depende de si se aplica a usted.
El segundo método es escribir un procedimiento almacenado, crear un índice adecuado en la tabla y abrir un. cursor para el procesamiento de datos (inserción) y realizarlo en lotes (ver parámetros específicos) Enviar.
El tercer método es ordenar la tabla original en algunas subtablas de acuerdo con la idea propuesta por el cartel, y luego operar.
Pero rownum obviamente no funciona.
Se puede usar 1 ROWID para ordenar. Pero cuando utilice ROWID, debe prestar atención a convertir el ROWID (no es una cadena normal) antes de poder utilizarlo.
2 Puede copiar completamente la tabla original a una nueva tabla, usar la secuencia para generar un número de fila (número de serie) para cada fila y luego usar el número de fila para ordenar y almacenar los datos de la tabla. para que en cada ejecución cuando el monto disminuya.
Por supuesto, hay muchos métodos. ¡Espero que te pueda ayudar!