我们的系统被另一个访问我们的系统,它MAX()
从一个连接几个大表但只返回几千行的视图中选择一列。
他们的查询很慢,但是当我们尝试时sp_showplan
,只有“OPEN CURSOR”可见。
必须有一个连接顺序和索引使用(某处必须有一个完整的计划),但我们看不到它。
监视器表出现只是为了存储显示计划。
有任何想法的人吗?也许是某种 dbcc?
我们的系统被另一个访问我们的系统,它MAX()
从一个连接几个大表但只返回几千行的视图中选择一列。
他们的查询很慢,但是当我们尝试时sp_showplan
,只有“OPEN CURSOR”可见。
必须有一个连接顺序和索引使用(某处必须有一个完整的计划),但我们看不到它。
监视器表出现只是为了存储显示计划。
有任何想法的人吗?也许是某种 dbcc?
MDA 表是否安装在那里。如果是,您是否检查了表 monSysPlanText。
检查查询计划的其他方式,使用下面
设置 showplan on write Query go
还有其他选项也提供以下详细信息:-
set statistics time on set statistics io on set statistics plancost on
听起来客户端 JDBC/ODBC 设置可能具有“游标”而不是直接启用,它将游标包裹在所有查询周围。
在调查方面,您还可以在活动时检查该 spid 的系统锁,并根据其对象 ID 查看正在使用哪些锁,这将帮助您缩小正在使用的任何表和/或特定索引的范围。
如果您确实启用了 MDA,那么 monOpenObjectActivity 和 monProcessActivity 也会有所帮助。