2010-05-14 14 views
5

Ich habe eine Datenbank in SQL Server 2008, und es gibt viele Maschinen, die Abfragen dagegen machen. Ich weiß, dass es einen SQL Server Profiler gibt, aber ich weiß nicht sehr gut, wie man es benutzt.SQL am meisten ausgeführte Abfrage?

Gibt es eine Möglichkeit zu wissen, welche Abfragen in der Datenbank am häufigsten ausgeführt werden? Durch den Profiler oder nicht, spielt es keine Rolle.

Vielen Dank im Voraus!

Antwort

20
 SELECT * 
     FROM sys.dm_exec_query_stats AS a 
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) AS b 
    ORDER BY execution_count DESC 

Dies wird Ihnen sagen, wie oft eine Abfrage ausgeführt wurde und die längste Abfrage ausgeführt wurde.

Nicht sicher, ob dies sehr nützlich sein wird oder nicht, aber das SQL gibt Ihnen die langsamste 100 Anfragen:

SELECT TOP 100 
      [Object_Name] = object_name(st.objectid), 
      creation_time, 
      last_execution_time, 
      total_cpu_time = total_worker_time/1000, 
      avg_cpu_time = (total_worker_time/execution_count)/1000, 
      min_cpu_time = min_worker_time/1000, 
      max_cpu_time = max_worker_time/1000, 
      last_cpu_time = last_worker_time/1000, 
      total_time_elapsed = total_elapsed_time/1000 , 
      avg_time_elapsed = (total_elapsed_time/execution_count)/1000, 
      min_time_elapsed = min_elapsed_time/1000, 
      max_time_elapsed = max_elapsed_time/1000, 
      avg_physical_reads = total_physical_reads/execution_count, 
      avg_logical_reads = total_logical_reads/execution_count, 
      execution_count, 
      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 qs 
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st 
    ORDER BY total_worker_time/execution_count DESC 
+0

Dies sind Lebensretter. Konnte sofort sehen, welche Abfragen nicht zwischengespeichert werden konnten. – JakobMillah

Verwandte Themen