如何在特定数据库上执行最昂贵的SQL查询

时间:2018-01-07 15:22:19

标签: sql-server performance

我没有DBA,几乎不知道关于SQL的一些事情,我发现很多在线脚本可以获得最昂贵的查询,但我似乎无法找到一个只关注一个特定数据库。例如:

SELECT TOP 100 
    SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
    ((CASE qs.statement_end_offset
         WHEN -1 THEN DATALENGTH(qt.TEXT)
         ELSE qs.statement_end_offset
      END - qs.statement_start_offset)/2)+1) as query,
    qs.execution_count,
    qs.total_logical_reads, qs.last_logical_reads,
    qs.total_logical_writes, qs.last_logical_writes,
    qs.total_worker_time, qs.last_worker_time,
    qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
    qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
    qs.last_execution_time,
    qp.query_plan
FROM 
    sys.dm_exec_query_stats qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY 
    sys.dm_exec_query_plan(qs.plan_handle) qp
-- ORDER BY 
--    qs.total_logical_reads DESC -- logical reads
-- ORDER BY 
--     qs.total_logical_writes DESC -- logical writes
ORDER BY 
    qs.total_worker_time DESC -- CPU time

此脚本提供了有关所有数据库中所有操作的大量详细信息,如何指定一个特定的数据库?

1 个答案:

答案 0 :(得分:2)

过滤依据:

where DB_NAME(qt.dbid) = 'MyDBNAme'