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

¿Por qué aparece una clasificación en mi plan de ejecución?

SQL Server tiene tres algoritmos para elegir cuando necesita unir dos tablas. El Nested-Loops-Join, el Hash-Join y el Sort-Merge-Join. Cuál selecciona se basa en estimaciones de costos. En este caso, pensó que, según la información que tenía disponible, Ordenar-Fusionar-Unir era la elección correcta.

En los planes de ejecución de SQL Server, Sort-Merge se divide en dos operadores, Sort y Merge-Join, porque la operación de ordenación podría no ser necesaria, por ejemplo, si los datos ya están ordenados.

Para obtener más información sobre las combinaciones, consulte mi serie de combinaciones aquí:http://sqlity.net/es/1146/a-join-a-day-introduction/ El artículo sobre Sort-Merg-Join está aquí:http://sqlity.net/en/1480/a-join-a-day-the-sort-merge-join/

Para hacer su consulta más rápida, primero miraría los índices. Tiene un montón de escaneos de índice agrupados en la consulta. Si puede reemplazar algunos de ellos con búsquedas, lo más probable es que sea mejor. Compruebe también si las estimaciones que produce SQL Server coinciden con los recuentos de filas reales en un plan de ejecución real. Si están lejos, SQL Server a menudo toma malas decisiones. Por lo tanto, proporcionar mejores estadísticas también puede ayudarlo a consultar el rendimiento.