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

Use una unión o una combinación:¿qué es más rápido?

Union será más rápido, ya que simplemente pasa la primera instrucción SELECT y luego analiza la segunda instrucción SELECT y agrega los resultados al final de la tabla de salida.

La unión pasará por cada fila de ambas tablas, encontrando coincidencias en la otra tabla, por lo tanto, necesitará mucho más procesamiento debido a la búsqueda de filas coincidentes para todas y cada una de las filas.

EDITAR

Por Unión, me refiero a Unión Todo, ya que parecía adecuado para lo que estaba tratando de lograr. Aunque una unión normal es generalmente más rápida que unirse.

EDITAR 2 (Responder al comentario de @seebiscuit)

no estoy de acuerdo con el Técnicamente hablando, no importa cuán buena sea su combinación, una "UNIÓN" sigue siendo más costosa que una concatenación pura. Hice una publicación de blog para probarlo en mi blog codePERF[dot]net . En términos prácticos, sirven para 2 propósitos completamente diferentes y es más importante asegurarse de que su indexación sea correcta y utilice la herramienta adecuada para el trabajo.

Técnicamente, creo que se puede resumir usando los siguientes 2 planes de ejecución tomados de mi publicación de blog:

UNION ALL Plan de Ejecución

JOIN Plan de Ejecución

Resultados prácticos

En términos prácticos, la diferencia en una búsqueda de índice agrupado es insignificante: