Можно ли повторно использовать план выполнения базы данных при изменении количества параметров в предложении *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%'
Другие вопросы по тегам