sql >> Base de Datos >  >> RDS >> Mysql

Tiempo de unión Mysql V.S. consulta separada una por una

La UNION El operador requiere que las tuplas duplicadas (filas) se eliminen del conjunto de resultados antes de que se devuelvan las filas. Eso es efectivamente una operación de CLASIFICACIÓN ÚNICA. Eso es relativamente económico para conjuntos de resultados pequeños, pero para conjuntos masivos, puede consumir muchos recursos en el tiempo del servidor (es decir, llevar mucho tiempo).

En teoría, combinar las consultas con UNION ALL operador en lugar de un UNION operador sería más rápido, ya que eliminaría (n -1) viajes de ida y vuelta a la base de datos, frente a la ejecución de consultas por separado. Pero para valores grandes de n , se encontrará con límites prácticos en el tamaño del texto SQL (tamaño máximo de paquete).

Dada la elección entre UNION operador y consultas separadas, para un gran conjunto de resultados, las consultas separadas requerirán menos recursos en el lado del servidor.

En resumen, es realmente una compensación entre el trabajo pesado de cada consulta y el trabajo pesado de una operación ORDENAR ÚNICAMENTE.