es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ORDENAR POR filas en vista para LÍMITE y DESPLAZAMIENTO

Tengo una vista que lee de diferentes tablas de origen y devuelve aproximadamente 40 millones de filas. Ahora, quiero extraer estos datos por lotes, utilizando LIMIT y OFFSET.

SELECT * FROM combined_view LIMIT 1000000 OFFSET 0;
SELECT * FROM combined_view LIMIT 1000000 OFFSET 1000000

etc.

Sin embargo, para mantener la consistencia y evitar superposiciones / filas faltantes, este SELECT debería ordenarse por algún tipo de identificador único, de modo que cada SELECT devuelva todas las filas en el mismo orden (y luego se filtre por LIMIT y OFFSET).

Estaba pensando en crear una tabla temporal a partir de esta vista y luego leer desde esa tabla (ya que cada tabla tiene row_id), pero no estoy seguro de que sea la mejor solución.

Por favor, aconseje.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para garantizar la coherencia y evitar superposiciones/filas faltantes, la instrucción SELECT para extraer datos de la vista por lotes debe estar ordenada por un ID único. Esto asegurará que cada lote de datos extraídos esté en el mismo orden, facilitando el seguimiento de los datos extraídos y los que aún deben ser extraídos. Una posible solución es crear una tabla temporal a partir de la vista y luego leer de esa tabla. Como cada tabla tiene un row_id, se puede utilizar como ID único para ordenar los datos. Sin embargo, puede haber otras soluciones que se adapten mejor a los requisitos específicos del proyecto. Se recomienda discutir esto con un equipo de expertos en bases de datos para encontrar la mejor solución para el escenario dado.

Comments are closed.