sql >> Databáze >  >> RDS >> Sqlserver

Proč je databázový dotaz v aplikaci pomalý?

Měl bych podezření na sniffování parametrů.

Plán spuštění v mezipaměti používaný pro připojení vaší aplikace pravděpodobně nebude použitelný pro vaše připojení SSMS kvůli jiné set možnosti, takže vygeneruje nový jiný plán.

Plány uložené v mezipaměti pro uloženou proceduru můžete načíst pomocí níže uvedeného dotazu. Poté porovnejte, zda se liší (např. ten pomalý prohledává indexy a záložky na místě, kde ten druhý skenuje?)

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. 2 Funkce, které získají den, měsíc a rok z data v Oracle

  2. Mysqli_fetch_assoc($result), ukazatel se přesune na další záznam. Existuje nějaký způsob, jak resetovat ukazatel na začátek výsledku dotazu?

  3. Je možné provést funkci bitové skupiny?

  4. Tento připravený příkaz PDO vrátí hodnotu false, ale nevyvolá chybu