Я пытаюсь изучить оптимизацию по adho c запросам на множественном освещении, базу данных можно найти по этой ссылке
Когда я впервые запускаю эти запросы, например:
select m.* from member as m where m.member_no=1
select m.* from member as m where m.member_no=3
select m.* from member as m where m.member_no=5
И затем проверьте кэш плана с помощью:
exec dbo.QuickCheckOnCache '%member_no%'
Я получаю этот результат:
После этого, когда я выполняю, например, этот запрос:
select m.* from member as m where m.member_no=34567
, я получаю новый кэш плана:
Ожидаемое поведение - обновлять существующий планкэш, а не создавать новый, как было на видео с множеством точек зрения.
Так это вопрос версии SQL Server? Или что я делаю не так?
Примечание : это определение хранимой процедуры QuickCheckOnCache :
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[QuickCheckOnCache]
(
@StringToFind NVARCHAR (4000)
)
AS
SET NOCOUNT ON;
SELECT [st].[text]
, [qs].[execution_count]
, [qs].*
, [p].*
FROM [sys].[dm_exec_query_stats] AS [qs]
CROSS APPLY [sys].[dm_exec_sql_text]
([qs].[sql_handle]) AS [st]
CROSS APPLY [sys].[dm_exec_query_plan]
([qs].[plan_handle]) AS [p]
WHERE [st].[text] LIKE @StringToFind
ORDER BY 1, [qs].[execution_count] DESC;