Límite de memoria excedido
El optimizador se vio obligado a dejar de buscar mejores alternativas de plan debido a la presión de la memoria. La razón de esto debe investigarse y corregirse, luego intentar la compilación de consultas nuevamente. Es muy posible que el plan devuelto no sea el que el optimizador hubiera seleccionado si la condición de poca memoria no existiera.
Se acabó el tiempo
Esta razón es muy mal entendida .
El optimizador de consultas tiene como objetivo encontrar un plan razonable rápidamente . No realiza una búsqueda exhaustiva para encontrar el mejor plan posible. Por diseño, evita pasar más tiempo de optimización de lo necesario. Una de estas características que funciona para garantizar esto es el "tiempo de espera" (no es una medida de tiempo).
El optimizador se establece un "presupuesto de exploración" basado en la complejidad de la consulta lógica, las estimaciones de cardinalidad y el costo estimado del plan más barato encontrado hasta ahora (si corresponde). Las consultas más complejas con mayor cardinalidad reciben un presupuesto más alto.
Si se supera este presupuesto durante una de sus fases de búsqueda, la fase finaliza. Esto es parte del diseño y el funcionamiento normal del optimizador. Las consultas que necesitan más esfuerzo optimizador lo obtienen; los que no, no.
Piense en 'Time Out' como 'Good Enough Plan Found'.
Buen plan suficiente encontrado
Esto significa exactamente lo mismo que un motivo en blanco. Es simplemente una peculiaridad histórica que los planes con un costo inferior a 0,909090 ... (1 / 1.1) se etiquetan de esta manera. Nada se detiene antes o se maneja de manera especial o diferente dentro del código del optimizador cuando aparece este motivo.
Aparte del límite de memoria excedido, ninguna de las 'razones de terminación temprana' significan mucho (si es que hay algo) para el ajuste de consultas o el análisis de rendimiento. Generalmente los ignoro.
Consejo
Dirija los esfuerzos de ajuste de consultas basados en métricas de rendimiento real (tiempo transcurrido, uso de CPU / memoria, ... lo que sea importante en contexto). Si una consulta es demasiado lenta para el propósito previsto, dedique tiempo a acelerarla. Mida el rendimiento real, compárelo con la línea de base y el historial, y apunte el esfuerzo de ajuste en las variaciones importantes.
Almacene datos limpios garantizados en un esquema relacional adecuado, con estadísticas e índices útiles y consultas bien escritas y optimizadas para el optimizador.