SQL Server 2005中的行处理统计信息
-
29-09-2019 - |
题
在Oracle中,有一个称为V $ SQLAREA的视图,该视图列出了共享SQL区域上的统计信息,并包含每个SQL字符串的一行。它提供有关存储器,解析并准备执行的SQL语句的统计信息。
有一个列-Rows_processed代表此SQL语句总和处理的行总数。
我正在寻找SQLServer 2005中的抵押信息。
我查看了一些DMV(例如sys.dm_exec_query_stats),但我没有找到任何相关的东西。
@@ rowcount对我不会有用,因为我想要增量统计信息,这些信息将汇总数据库中最高CPU/IO/执行消费查询的ROWS_PROCESS。
我将感谢有关该主题的任何帮助。
提前致谢,
罗尼。
我看到,当我查询以下查询时,我会在XML中收到查询计划。
在XML计划代码内部,有一个“估算物质”部分,其中一个数字与查询的估计行相关。
我正在考虑将QUERY_PLAN列的选项仅用于以上信息(除非我在某些系统视图/表中找到它)。
我在哪里可以找到查询的实际行数?它存储在哪里?
SELECT
case when sql_handle IS NULL
then ' '
else ( substring(st.text,(statement_start_offset+2)/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(MAX),st.text))*2
else statement_end_offset
end - statement_start_offset) /2 ) )
end as query_text ,
query_plan,
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
cross apply sys.dm_exec_sql_text(sql_handle) st;
解决方案
据我所知,尤其是对于划分的直接等效物。相关的DMVS跟踪IO成本,用于显示缺失的索引,最昂贵的查询等
这将为您提供当前会话的每个SQL语句的统计信息。 YMMV:我只是根据我周围的脚本将其放在一起。
SELECT
*
FROM
sys.dm_exec_query_stats QS
CROSS APPLY
sys.dm_exec_sql_text(sql_handle) ST
我的脚本是基于链接的 这里提到
其他提示
您可以使用系统变量@@ rowcount来了解受上一句影响的记录数。
不隶属于 StackOverflow