我在我们的 DEV/TEST 环境中的一张表上实现了分区,并修改了一些程序以在访问该表时使用分区键。
如何验证数据库中是否确实发生了分区消除?
我试着用这个查询检查它。但是我只看到提到了“partitioned = true”,但没有访问多少个分区。
SELECT
eqs.execution_count,
CAST((1.)*eqs.total_worker_time/eqs.execution_count AS NUMERIC(10,1)) AS avg_worker_time,
eqs.last_worker_time,
CAST((1.)*eqs.total_logical_reads/eqs.execution_count AS NUMERIC(10,1)) AS avg_logical_reads,
eqs.last_logical_reads,
(SELECT TOP 1 SUBSTRING(est.text,statement_start_offset / 2+1 ,
((CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),est.text)) * 2)
ELSE statement_end_offset END)
- statement_start_offset) / 2+1))
AS sql_statement,
qp.query_plan
FROM sys.dm_exec_query_stats AS eqs
CROSS APPLY sys.dm_exec_sql_text (eqs.sql_handle) AS est
JOIN sys.dm_exec_cached_plans cp on
eqs.plan_handle=cp.plan_handle
CROSS APPLY sys.dm_exec_query_plan (cp.plan_handle) AS qp
WHERE est.text like '%<TABLE_NAME>%'
OPTION (RECOMPILE);
您是否有任何其他查询可以帮助我确定我的数据库中是否发生分区消除?
谢谢 !
罗尼。
使用扩展事件通过
query_post_execution_showplan
事件库捕获实际执行计划。创建会话时,请注意新会话向导中的以下警告:以下 T-SQL 将创建所需的扩展事件会话。不要在生产 SQL Server 上运行它,除非你想让它慢一点。