是否有可能检测到哪些查询返回了一个大的结果集?
更新: 如果结果很大,我的意思是查询返回了很多行。在我们的例子中,返回数百万行是没有意义的,这很可能是查询/UPDATE中的错误
就像我做一个
select * from [MyMultiMillionRowsTable]
我可以在某处/以某种方式看到该查询吗?
还有一个相关的问题,是否可以查看执行了多少次这样的查询?
我问的原因是我们怀疑我们的一些查询返回过大的结果集,这给内存和网络带来了压力,我们无法在代码库中轻松找到它们。
是否有可能检测到哪些查询返回了一个大的结果集?
更新: 如果结果很大,我的意思是查询返回了很多行。在我们的例子中,返回数百万行是没有意义的,这很可能是查询/UPDATE中的错误
就像我做一个
select * from [MyMultiMillionRowsTable]
我可以在某处/以某种方式看到该查询吗?
还有一个相关的问题,是否可以查看执行了多少次这样的查询?
我问的原因是我们怀疑我们的一些查询返回过大的结果集,这给内存和网络带来了压力,我们无法在代码库中轻松找到它们。
是的,你可以这么做。一种方法是使用Glenn Berry 的查询,稍作修改,请参阅查询中的评论。
.. 或者只是探索sys.dm_exec_query_stats的内容。
查看更多sys.dm_exec_query_stats (Transact-SQL)
DMV sys.dm_exec_query_stats从 SQL Server 2012 开始更改。引入了一些反映您的问题的新列。
总行数
查询返回的总行数。不能为空。
当本机编译的存储过程查询内存优化表时,将始终为 0。
最后一行
上次执行查询返回的行数。不能为空。
当本机编译的存储过程查询内存优化表时,将始终为 0。
最小行数
一次执行期间查询返回的最小行数。不能为空。
当本机编译的存储过程查询内存优化表时,将始终为 0。
最大行数
一次执行期间查询返回的最大行数。不能为空。
当本机编译的存储过程查询内存优化表时,将始终为 0。