sql >> Base de Datos >  >> RDS >> Sqlserver

SQL SERVER 2008 JOIN sugerencias

Porque esto le roba al optimizador la oportunidad de considerar otros métodos que pueden ser más eficientes.

Cuando la distribución de datos (sobre la que el optimizador toma sus decisiones) está muy sesgada y las estadísticas no pueden representarla correctamente.

Estos son algoritmos diferentes.

  1. LOOP es bucles anidados:para cada registro de la tabla externa, se busca coincidencias en la tabla interna (usando el índice de disponible). Más rápido cuando solo una pequeña parte de los registros de ambas tablas satisfacen JOIN y el WHERE condiciones.

  2. MERGE ordena ambas tablas y las atraviesa en el orden de clasificación, omitiendo los registros no coincidentes. Más rápido para FULL JOIN s y cuando ambos conjuntos de registros ya están ordenados (de operaciones de clasificación anteriores o cuando se usa la ruta de acceso al índice)

  3. HASH construir una tabla hash en el almacenamiento temporal (memoria o tempdb ) de una de las tablas y busca cada registro de la otra. Más rápido si la gran parte de los registros de cualquiera de las tablas coincide con WHERE y JOIN condición.