resueltos plan optimizar optimización optimizacion lentas inner ejercicios ejecución consultas sql sql-server

sql - plan - ¿Qué es mejor? Distinto o Agrupar por



optimizar sql server (7)

¿Cuál es más eficiente?

SELECT theField FROM theTable GROUP BY theField

o

SELECT DISTINCT theField FROM theTable


tienes que saber la diferencia entre los dos y no usarlos indistintamente.


En la mayoría de los casos, DISTINCT y GROUP BY generan los mismos planes, y su rendimiento suele ser idéntico


En su ejemplo, ambas consultas generarán el mismo plan de ejecución para que su rendimiento sea el mismo.

Sin embargo, ambos tienen su propio propósito. Para hacer que su código sea más fácil de entender, debe usar distinct para eliminar filas duplicadas y agrupar para aplicar operadores agregados (suma, recuento, máximo, ...).


Hmmm ... por lo que puedo ver en el plan de ejecución para ejecutar consultas similares, son idénticos.


No importa, resulta en el mismo plan de ejecución. (al menos para estas consultas). Este tipo de preguntas son fáciles de resolver, al permitir que el analizador de consultas o el SSMS muestren el plan de ejecución y quizás las estadísticas de seguimiento del servidor después de ejecutar la consulta.


Puede consultar el plan de ejecución para buscar el costo total de estas declaraciones. La respuesta puede variar en diferentes escenarios.


En MySQL, DISTINCT parece un poco más rápido que GROUP BY si TheField no está indexado. DISTINCT solo elimina filas duplicadas pero GROUP BY parece ordenarlas además.