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

Zapytanie SQL przy użyciu Entity Framework działa wolniej, używa złego planu zapytań

Problemem był nieaktualny lub niepoprawny plan zapytania dla mojego zapytania.

Rozwiązałem problem z usunięciem istniejących planów zapytań dla tego zapytania.

Dziękuję Vladimirowi Baranovowi za skierowanie mnie na sommarskog.se/query-plan-mysteries.html. Dziękuję również tschmit007 i annemartijn.

Musiałem zidentyfikować plany zapytań dla mojego zapytania w bazie danych za pomocą następującego zapytania:

SELECT qs.plan_handle, a.attrlist, est.dbid, text
FROM   sys.dm_exec_query_stats qs
CROSS  APPLY sys.dm_exec_sql_text(qs.sql_handle) est
CROSS  APPLY (SELECT epa.attribute + '=' + convert(nvarchar(127), epa.value) + '   '
          FROM   sys.dm_exec_plan_attributes(qs.plan_handle) epa
          WHERE  epa.is_cache_key = 1
          ORDER  BY epa.attribute
          FOR    XML PATH('')) AS a(attrlist)
 WHERE  est.text LIKE '%standardHourRate%' and est.text like '%q__7%'and est.text like '%Unit Overhead%'
 AND  est.text NOT LIKE '%sys.dm_exec_plan_attributes%'

Jest to nieco zmodyfikowana wersja zapytania z artykułu sommarskog. Zauważ, że musisz umieścić swój własny kod w podobnych instrukcjach, aby znaleźć swoje zapytanie. To zapytanie odpowiada listą atrybutów i uchwytem planu dla każdego planu zapytania dla mojego zapytania.

Próbowałem dowiedzieć się, który plan pochodzi z SSMS, a który z EF, więc usunąłem je wszystkie, używając następującej składni:

dbcc freeproccache([your plan handle here])

Nowy plan stworzony dla mojego zapytania EF działał idealnie. Najwyraźniej plan EF nie uwzględniał tego, że ostatnio aktualizowałem statystyki bazy danych. Niestety nie wiem, jak wykonać sp_recompile dla zapytania EF.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Jak przyznać sobie dostęp administratora do lokalnej instancji SQL Server?

  2. Jak rozwiązać Microsoft SQL Server. Błąd 233. Dostawca:Dostawca SSL

  3. Czy są dostępne bezpłatne dodatki do autouzupełniania programu SQL Server Mgmt Studio?

  4. ROW_NUMBER() w widoku w SQL Server 2005

  5. Zmiany schematu nie są aktualizowane w Intellisense w SQL 2008 (SSMS)