txt string_agg sensitive recognized queryout not name from ejemplos ejecutar desde create built sql-server query-optimization

sql server - string_agg - ¿Cómo comparar dos consultas?



sql server create temporary table from select (4)

¿Has examinado los planes de consulta? Si las consultas devuelven los mismos datos y toman la misma cantidad de tiempo para ejecutarse, supongo que los planes de consulta serán casi idénticos, lo que significa que no hay una diferencia significativa entre las dos consultas.

Además, ¿ha tenido en cuenta que las consultas funcionan de manera diferente a medida que cambia el tamaño de la base de datos?

Me pregunto si está optimizando prematuramente el código. En mi opinión, si tengo una consulta que funciona y es comprensible, puedo abordar los problemas de rendimiento a través de índices. Y eso suele ser más fácil que cambiar las consultas para mejorar el rendimiento.

¿Cómo puedo comparar dos consultas X e Y y decir que X es mejor que Y, cuando ambas toman casi el mismo tiempo en escenarios de casos pequeños?

El problema es que tengo dos consultas que se supone que se ejecutan en una base de datos muy grande, por lo que ejecutar y evaluar no es una opción. Por lo tanto, creamos una pequeña base de datos para realizar algunas pruebas. Evaluar qué consulta es mejor es un problema, ya que en nuestra base de pruebas, se ejecutan casi al mismo tiempo (aproximadamente 5 minutos). Además del tiempo que se tarda en regresar, ¿cuál es otra forma de medir qué tan buena es una consulta?


Como ya se mencionó, consultar los planes de ejecución.

Lo que es más importante, compare las 2 consultas de manera justa borrando el caché entre cada ejecución, solo para asegurarse de que no esté viendo resultados distorsionados debido al efecto de los datos que ya se almacenan en la memoria caché (no se ejecutan en el servidor de producción):

DBCC DROPCLEANBUFFERS -- clear proc plan cache DBCC FREEPROCCACHE -- clear data cache

Entonces, lo que normalmente hago es revisar las Lecturas, Escrituras, CPU y Duración para una comparación.

Es muy importante que realice pruebas con volúmenes de datos de nivel de producción (e idealmente mayor para ver cómo se escalará). Es en esos volúmenes que realmente verá cualquier diferencia de rendimiento. Las pruebas con pequeños volúmenes de datos podrían dejarlo abierto a problemas más adelante.


La evaluación del rendimiento de las consultas en un conjunto de datos significativamente diferente generalmente tiene muy poco sentido. Los planes de consulta y su eficiencia pueden variar mucho dependiendo de las estadísticas de datos.

Para obtener estimaciones realistas, necesita una base de datos lo más cercana posible a la "real". Lo mejor de todo, tome una copia de su "gran base de datos" y ajuste sus consultas a ella.


SET STATISTICS IO ON SET STATISTICS TIME ON

Ejecute las consultas y compare las lecturas lógicas para las distintas tablas y los tiempos de ejecución.