SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Dlaczego uruchamianie zapytania na platformie SQL Azure jest znacznie wolniejsze?

To przede wszystkim kwestia wydajności. Masz do czynienia ze źle działającym kodem ze swojej strony i musisz zidentyfikować wąskie gardło i je rozwiązać. Mówię o złych 2 sekundach wydajność teraz. Postępuj zgodnie z wytycznymi na Jak analizować wydajność SQL Server . Po uzyskaniu tego zapytania do wykonania lokalnie akceptowanego dla aplikacji sieci Web (mniej niż 5 ms), możesz zadać pytanie o przeniesienie go do bazy danych SQL Azure. W tej chwili Twoje konto próbne podkreśla tylko istniejące nieefektywności.

Po aktualizacji

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

więc co to jest? to iddepartment kolumna int lub nvarchar ? I po co używać (max) ?

Oto, co powinieneś zrobić:

  • parametryzuj @iddepartment w wewnętrznym dynamicznym SQL
  • przestań robić nvarchar(max) konwersja. Utwórz iddepartment i @iddertment typy pasują
  • zapewnij indeksy w iddepartment i wszystkie idkpi s

Oto jak sparametryzować wewnętrzny SQL:

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;

Indeksy pokrywające są zdecydowanie najważniejszą poprawką. To oczywiście wymaga więcej informacji niż jest tutaj. Przeczytaj Projektowanie indeksów w tym wszystkie podrozdziały.

Jako bardziej ogólny komentarz:tego rodzaju zapytania pasują do kolumnstores więcej niż rowstore, chociaż uważam, że rozmiar danych jest w zasadzie niewielki. Azure SQL DB obsługuje aktualizowalne klastrowane indeksy magazynu kolumn, możesz z nim eksperymentować w oczekiwaniu na poważny rozmiar danych. Wymagają Enterprise/Development na lokalnym polu, prawda.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Jak zobaczyć wartości zmiennej tabeli w czasie debugowania w T-SQL?

  2. Transpozycja grup wierszy o tym samym identyfikatorze do innej tabeli

  3. Utwórz tabelę, kopiując strukturę istniejącej tabeli

  4. Jak włączyć automatyczne określanie zakresu transakcji w SQL Server Management Studio?

  5. Edytuj dtsx przez SSMS