Лучшая информация для предмета, найденного на MSDN, здесь: Кэширование и повторное использование плана выполнения
. Цитата из статьи MSDN:
«Удаление планов выполнения из кэша процедур
Планы выполнения остаются в кэше процедур до тех пор, пока для их хранения достаточно памяти. Когда существует нехватка памяти, компонент Database Engine использует основанный на стоимости подход, чтобы определить, какие планы выполнения удалить из кэша процедур. Чтобы принять решение на основе стоимости, компонент Database Engine увеличивает и уменьшает текущую переменную стоимости для каждого плана выполнения в соответствии со следующими факторами.
Когда существует нехватка памяти, компонент Database Engine отвечает, удаляя планы выполнения из кэша процедур. Чтобы определить, какие планы удалить, компонент Database Engine неоднократно проверяет состояние каждого плана выполнения и удаляет планы, когда их текущая стоимость равна нулю. План выполнения с нулевой текущей стоимостью не удаляется автоматически при наличии нагрузки на память; он удаляется только тогда, когда компонент Database Engine проверяет план, а текущая стоимость равна нулю. При проверке плана выполнения компонент Database Engine смещает текущую стоимость к нулю, уменьшая текущую стоимость, если запрос в настоящее время не использует план ».
Лучше прочитать полную статью, она очень хорошо документирована. Посмотрите, что он также имеет некоторые ссылки.