Do meu conhecimento limitado de como os planos de consulta são compilados, armazenados e recuperados por consultas, eu entendo que uma consulta de várias instruções ou procedimento armazenado gerará seu plano de consulta que será armazenado no cache do plano de consulta para ser usado pela consulta em execuções futuras.
Acho que esse plano é recuperado do cache do plano de consulta com o hash da consulta, o que significa que, se a consulta for editada e executada, o hash será diferente e um novo plano será gerado, pois nenhum hash correspondente poderá ser encontrado no cache do plano de consulta.
Minha pergunta é: se um usuário executar uma instrução que é uma das instruções na consulta de várias instruções, ele poderá usar essa parte relevante do plano de consulta que já está no cache para a consulta de várias instruções? Espero que a resposta seja não, porque os valores de hash obviamente não coincidem, mas seria melhor fazer o hash de cada instrução em uma consulta com várias instruções para que pudessem ser usadas por usuários executando instruções individuais a partir da consulta?
Espero que haja complicações que não estou levando em consideração (e é sobre isso que realmente quero conhecer), mas parece que podemos estar armazenando o mesmo 'plano de declaração' em muitos planos de consulta, ocupando mais espaço e ocupando mais espaço. CPU e tempo para gerar.
Só poderia estar mostrando minha ignorância.
dbid
eobjectid
ambos têm,is_cache_key=1
para que você não possa reutilizar planos entre diferentes objetos compilados.