U0
Ciao ipotizziamo che la lentezza sia dovuta non tanto ad una singola query, ma ad un numero elevato di query lanciate dalla procedura (es. : un loop for...next?)
Abbiamo eseguito la seguente query per rilevare le query più lente e non abbiamo nulla di rilevante nei tempi di esecuzione, tranne il numero elevato di invocazione di alcune query.
E' possibile ridurre il numero di query al DB eseguite nella procedura "articoli da ordinare", raggruppando più query in una sola?
La query usata per reperire le statistiche sulla durata delle query di SQL server è la seguente :
SELECT * from (
SELECT creation_time ,last_execution_time ,total_physical_reads ,total_logical_reads ,total_logical_writes , execution_count , total_worker_time , total_elapsed_time , total_elapsed_time / execution_count avg_elapsed_time ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
) AS tmp1
where statement_text like 'select%'
ORDER BY total_elapsed_time / execution_count DESC
|