1

在 Oracle 中,有一个名为 V$SQLAREA 的视图列出了共享 SQL 区域的统计信息,并且每个 SQL 字符串包含一行。它提供有关在内存中、已解析并准备好执行的 SQL 语句的统计信息。

有一列 -ROWS_PROCESSED 汇总了代表此 SQL 语句处理的总行数。

我正在寻找 SQLSERVER 2005 中的附属信息。

我查看了一些 DMV(如 sys.dm_exec_query_stats),但没有找到任何相关内容。

@@ROWCOUNT 对我没有用,因为我想要增量统计信息,这些信息将汇总数据库中顶级 cpu/io/执行消耗查询的 rows_processed。

我将不胜感激有关该主题的任何帮助。

提前致谢,

罗尼。


我看到当我查询以下查询时,我收到了 XML 格式的查询计划。

在 XML 计划代码中,有一个“EstimateRows”部分,其数字与查询的估计行数相关。

我正在考虑将 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;
4

2 回答 2

2

据我所知,没有直接的等价物,尤其是对于行数。相关的 dmvs 跟踪 IO 成本,用于显示缺失的索引、最昂贵的查询等

这将为您提供当前会话的每个 SQL 语句的统计信息。YMMV:我只是根据我周围的脚本把它放在一起。

SELECT 
    *
FROM 
    sys.dm_exec_query_stats  QS
    CROSS APPLY 
    sys.dm_exec_sql_text(sql_handle) ST

我的脚本基于我在这里提到的链接

于 2010-11-08T11:35:48.880 回答
0

您可以使用系统变量@@rowcount 来了解最后一条语句影响的记录数。

于 2010-11-08T12:37:47.050 回答