@@ -4098,7 +4098,72 @@ BEGIN
40984098 volatile_metrics nvarchar (4000 ) NULL
40994099 );
41004100
4101- /* Step 1a: Aggregate runtime stats to plan_id level (qsrs + qsrsi only)*/
4101+ /* Step 1a: Stage interval IDs for the time window*/
4102+ CREATE TABLE
4103+ #hi_intervals
4104+ (
4105+ runtime_stats_interval_id bigint NOT NULL
4106+ );
4107+
4108+ SELECT
4109+ @current_table = ' inserting #hi_intervals' ,
4110+ @sql = @isolation_level;
4111+
4112+ IF @troubleshoot_performance = 1
4113+ BEGIN
4114+ EXECUTE sys .sp_executesql
4115+ @troubleshoot_insert,
4116+ N ' @current_table nvarchar(100)' ,
4117+ @current_table;
4118+
4119+ SET STATISTICS XML ON ;
4120+ END ;
4121+
4122+ SELECT
4123+ @sql + = N'
4124+ SELECT
4125+ qsrsi.runtime_stats_interval_id
4126+ FROM ' + @database_name_quoted + N' .sys.query_store_runtime_stats_interval AS qsrsi
4127+ WHERE qsrsi.start_time >= @start_date
4128+ AND qsrsi.start_time < @end_date
4129+ OPTION(RECOMPILE);' + @nc10;
4130+
4131+ IF @debug = 1
4132+ BEGIN
4133+ PRINT LEN (@sql);
4134+ PRINT @sql;
4135+ END ;
4136+
4137+ INSERT
4138+ #hi_intervals WITH (TABLOCK )
4139+ (
4140+ runtime_stats_interval_id
4141+ )
4142+ EXECUTE sys .sp_executesql
4143+ @sql,
4144+ N' @start_date datetimeoffset(7),
4145+ @end_date datetimeoffset(7)' ,
4146+ @start_date,
4147+ @end_date;
4148+
4149+ IF @troubleshoot_performance = 1
4150+ BEGIN
4151+ SET STATISTICS XML OFF ;
4152+
4153+ EXECUTE sys .sp_executesql
4154+ @troubleshoot_update,
4155+ N ' @current_table nvarchar(100)' ,
4156+ @current_table;
4157+
4158+ EXECUTE sys .sp_executesql
4159+ @troubleshoot_info,
4160+ N' @sql nvarchar(max),
4161+ @current_table nvarchar(100)' ,
4162+ @sql,
4163+ @current_table;
4164+ END ;
4165+
4166+ /* Step 1b: Aggregate runtime stats to plan_id level using staged intervals*/
41024167 SELECT
41034168 @current_table = ' inserting #hi_plan_stats' ,
41044169 @sql = @isolation_level;
@@ -4152,10 +4217,13 @@ SELECT
41524217 max_dop =
41534218 MAX(qsrs.max_dop)
41544219FROM ' + @database_name_quoted + N' .sys.query_store_runtime_stats AS qsrs
4155- JOIN ' + @database_name_quoted + N' .sys.query_store_runtime_stats_interval AS qsrsi
4156- ON qsrsi.runtime_stats_interval_id = qsrs.runtime_stats_interval_id
4157- WHERE qsrsi.start_time >= @start_date
4158- AND qsrsi.start_time < @end_date
4220+ WHERE EXISTS
4221+ (
4222+ SELECT
4223+ 1/0
4224+ FROM #hi_intervals AS hi
4225+ WHERE hi.runtime_stats_interval_id = qsrs.runtime_stats_interval_id
4226+ )
41594227GROUP BY
41604228 qsrs.plan_id
41614229HAVING
@@ -4191,11 +4259,7 @@ OPTION(RECOMPILE);' + @nc10;
41914259 max_dop
41924260 )
41934261 EXECUTE sys .sp_executesql
4194- @sql,
4195- N' @start_date datetimeoffset(7),
4196- @end_date datetimeoffset(7)' ,
4197- @start_date,
4198- @end_date;
4262+ @sql;
41994263
42004264 IF @troubleshoot_performance = 1
42014265 BEGIN
0 commit comments