З моїх обмежених знань про те, як плани запитів складаються, зберігаються та отримуються за допомогою запитів, я розумію, що запит із декількома операторами або збережена процедура генерує план запитів, який буде зберігатися в кеші плану плану, який буде використаний запитом у майбутніх виконаннях.
Я думаю, що цей план витягується з кешу плану запитів із хешем запиту, а це означає, що якщо запит буде відредаговано та виконано хеш, інший і генерується новий план, оскільки в кеш-плані запиту не може бути знайдено відповідний хеш.
Моє запитання: Якщо користувач виконує оператор, який є одним із висловлювань запиту з декількома операторами, чи може він використовувати ту відповідну частину плану запитів, яка вже є в кеші для запиту з декількома операторами? Я очікую, що відповідь - ні, тому що значення хешів, очевидно, не збігаються, але було б краще хешировать кожне твердження в запиті з декількома операторами, щоб їх могли використовувати користувачі, які виконують окремі заяви з запиту?
Я думаю, що є ускладнення, які я не беру до уваги (і саме про це я дуже хочу знати), але, схоже, ми могли б зберігати той самий «план тверджень» у багатьох планах запитів, займаючи більше місця та займаючи більше Процесор і час для генерації.
Хоча якраз може виявляти моє невігластво.
dbid
і те іobjectid
інше,is_cache_key=1
тому ви не отримаєте повторного використання планів між різними складеними об'єктами.