Altough I get to see equal values from both sources for the columns query_plan_hash and query_hash , the query does not evaluate them as being equal !Microsoft SQL Server 2014 - 12.0.2402.0 (X64) Aug 13 2014 11:36:34 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )[code="sql"]SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;;WITH XMLNAMESPACES( DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan' ) , cteStmtSimpleAS ( SELECT cp.plan_handle , qp.query_plan , qp.dbid , xmlStmtSimple.value('@CardinalityEstimationModelVersion' , 'int' )AS CardinalityEstimationModelVersion , xmlStmtSimple.value('@StatementEstRows', 'float') AS StatementEstRows , xmlStmtSimple.value('@StatementOptmLevel', 'varchar(255)') AS StatementOptmLevel , xmlStmtSimple.value('@StatementOptmEarlyAbortReason', 'varchar(255)') AS StatementOptmEarlyAbortReason , xmlStmtSimple.value('@StatementSubTreeCost', 'float') AS StatementSubTreeCost , xmlStmtSimple.value('@StatementType', 'varchar(255)') AS StatementType , xmlStmtSimple.value('@QueryHash', 'varchar(255)') AS QueryHash , xmlStmtSimple.value('@QueryPlanHash', 'varchar(255)') AS QueryPlanHash FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_query_plan( cp.plan_handle ) AS qp CROSS APPLY qp.query_plan.nodes( '//StmtSimple' ) AS t( xmlStmtSimple ) WHERE qp.query_plan.exist( '//StmtSimple' ) = 1 )SELECT D.name DbName, D.create_date as DbCreateDate, D.compatibility_level DbCompatLvl , P.* , eqs.query_hash , case cast(eqs.query_hash as varchar(255) ) when P.QueryHash then 'OK' else '--' end QH , eqs.query_plan_hash , case cast(eqs.query_plan_hash as varchar(255) ) when P.QueryPlanHash then 'OK' else '--' end QpH , eqs.last_rows , eqs.total_rows / eqs.execution_count as Avg_Rows FROM cteStmtSimple P inner join sys.databases D on D.database_id = P.dbid and D.compatibility_level > 110 left join sys.dm_exec_query_stats eqs on eqs.plan_handle = P.plan_handle WHERE P.CardinalityEstimationModelVersion is not null OPTION( RECOMPILE )[/code][b]I would have expected to be able to use columns query_hash and query_plan_hash in the join with eqs, but apparently the engine is not considering the to be equal :-([/b]Clearly I must be missing something :crazy:[code="plain"]QueryHash QueryPlanHash query_hash QH query_plan_hash QpH0x49A7E7AB370A6393 0xE252C107E7F50FBE 0x49A7E7AB370A6393 -- 0xE252C107E7F50FBE --[/code]
↧