sql >> Base de Datos >  >> Database Tools >> SSMS

¿Por qué ejecutar una consulta en SQL Azure es mucho más lento?

Esto es ante todo una cuestión de rendimiento. Está lidiando con un código de bajo rendimiento de su parte y debe identificar el cuello de botella y solucionarlo. Estoy hablando de los malos 2 segundos rendimiento ahora. Siga las pautas en Cómo analizar el rendimiento de SQL Server . Una vez que obtenga esta consulta para que se ejecute localmente de forma aceptable para una aplicación web (menos de 5 ms), puede plantear la cuestión de trasladarla a Azure SQL DB. En este momento, su cuenta de prueba solo destaca las ineficiencias existentes.

Después de la actualización

...
@iddepartment int
...
iddepartment='+convert(nvarchar(max),@iddepartment)+'
...

¿así que qué es lo? es el iddepartment columna an int o un nvarchar ? ¿Y por qué usar (max) ?

Esto es lo que debe hacer:

  • parametrizar @iddepartment en el SQL dinámico interno
  • deja de hacer nvarchar(max) conversión. Haz el iddepartment y @iddertment coincidencia de tipos
  • asegurar índices en iddepartment y todos los idkpi s

Aquí se explica cómo parametrizar el SQL interno:

set @sql =N'
Select * from (
select kpiname, target, ivalues, convert(decimal(18,2),day(idate)) as iDay   
from kpi
inner join kpivalues on kpivalues.idkpi=kpi.idkpi
inner join kpitarget on kpitarget.idkpi=kpi.idkpi
inner join departmentbscs on departmentbscs.idkpi=kpi.idkpi
where [email protected]
group by kpiname,target, ivalues,idate)x
pivot
(
     avg(ivalues)
    for iDay in (' [email protected] + N')
) p'

execute sp_executesql @sql, N'@iddepartment INT', @iddepartment;

Los índices de cobertura son, con mucho, la solución más importante. Eso obviamente requiere más información de la que está aquí presente. Lea Diseño de índices incluidos todos los subcapítulos.

Como comentario más general:este tipo de consultas se adaptan a columnstores más que el almacén de filas, aunque creo que el tamaño de los datos es, básicamente, pequeño. Azure SQL DB admite índices de almacén de columnas agrupados actualizables, puede experimentar con él antes de un tamaño de datos importante. Requieren Empresa/Desarrollo en el cuadro local, cierto.