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

Unirse frente a subconsulta

Las subconsultas son la forma lógicamente correcta de resolver problemas del tipo "Obtener datos de A, condicional a los datos de B". En tales casos, tiene más sentido lógico pegar B en una subconsulta que hacer una combinación. También es más seguro, en un sentido práctico, ya que no tiene que tener cuidado con la obtención de datos duplicados de A debido a múltiples coincidencias contra B.

Sin embargo, en términos prácticos, la respuesta generalmente se reduce al rendimiento. Algunos optimizadores chupan limones cuando se les da una combinación frente a una subconsulta, y otros chupan limones al revés, y esto es específico del optimizador, específico de la versión DBMS y específico de la consulta.

Históricamente, las uniones explícitas generalmente ganan, de ahí la sabiduría establecida de que las uniones son mejores, pero los optimizadores están mejorando todo el tiempo, por lo que prefiero escribir consultas primero de una manera lógicamente coherente y luego reestructurar si las limitaciones de rendimiento lo justifican.