Según mi conocimiento limitado de cómo se compilan, almacenan y recuperan los planes de consulta mediante consultas, entiendo que una consulta de varios estados o un procedimiento almacenado generará su plan de consulta que se almacenará en la caché del plan de consulta para que la consulta la use en futuras ejecuciones.
Creo que este plan se recupera de la memoria caché del plan de consulta con el hash de consulta, lo que significa que si la consulta se edita y ejecuta, el hash es diferente y se genera un nuevo plan ya que no se puede encontrar un hash coincidente en la memoria caché del plan de consulta.
Mi pregunta es: si un usuario ejecuta una declaración que es una de las declaraciones en la consulta de varias declaraciones, ¿puede usar esa parte relevante del plan de consulta que ya está en el caché para la consulta de varias declaraciones? Espero que la respuesta sea no porque los valores hash obviamente no coincidirán, pero ¿sería mejor hacer hash cada declaración en una consulta de múltiples declaraciones para que puedan ser utilizados por los usuarios que ejecutan declaraciones individuales de la consulta?
Espero que haya complicaciones que no estoy teniendo en cuenta (y es esto de lo que realmente quiero saber), pero parece que podríamos estar almacenando el mismo 'plan de estado de cuenta' en muchos planes de consulta que ocupan más espacio y ocupan más CPU y tiempo para generar.
Sin embargo, podría estar mostrando mi ignorancia.
dbid
yobjectid
ambos lo tienenis_cache_key=1
para que no pueda reutilizar los planes entre diferentes objetos compilados.