Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego zapytanie do bazy danych działa tylko wolniej w aplikacji?

Podejrzewałbym podsłuchiwanie parametrów.

Buforowany plan wykonania używany do połączenia Twojej aplikacji prawdopodobnie nie będzie używany przez połączenie SSMS z powodu innego set opcje, dzięki czemu wygeneruje nowy inny plan.

Buforowane plany dla procedury składowanej można pobrać za pomocą poniższego zapytania. Następnie porównaj, aby sprawdzić, czy są różne (np. czy ten powolny wykonuje wyszukiwanie indeksu i wyszukiwanie zakładek w miejscu, w którym drugi wykonuje skanowanie?)

Use YourDatabase;

SELECT *
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
CROSS APPLY sys.dm_exec_query_plan(plan_handle) 
cross APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
where sys.dm_exec_sql_text.OBJECTID=object_id('YourProcName') 
         and attribute='set_options'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:najlepszy sposób na łączenie wielu kolumn?

  2. Jak ustawić nienazwane parametry SQL w SqlCommand?

  3. Jak utworzyć indeks dla kolumny ciągu w sql?

  4. SSRS:Jak stworzyć raport JAK tabela przestawna w ssrs 2008 r2

  5. Sprawdź, czy tabela ma kolumnę TIMESTAMP w SQL Server za pomocą OBJECTPROPERTY()