Можно ли повторно использовать план выполнения базы данных при изменении количества параметров в предложении *IN*?
Если запрос выполняется с 10 параметрами в предложении IN, и затем тот же запрос выполняется снова, но с 20 параметрами, может ли сервер базы данных повторно использовать план выполнения с первого запуска, или каждый раз должен быть создан новый план выполнения время?
1 ответ
Решение
Я просто сделал быструю проверку в SQL Server, и похоже, что каждый запрос действительно получал свой собственный план запроса, когда я добавлял / удалял значения из IN
пункт.
Этот код покажет вам планы запросов, которые в настоящее время кэшированы. Вы можете настроить проверку на text
сузить его до ваших конкретных запросов, а затем посмотреть, появляются ли новые строки при выполнении дополнительных версий запросов.
SELECT TOP 10
text,
*
FROM
sys.dm_exec_cached_plans AS CP
CROSS APPLY sys.dm_exec_sql_text(CP.plan_handle) ST
WHERE
text LIKE 'select * from dbo.My_Table where%'