Share via


Descripción del procedimiento para forzar planes

Actualizado: 15 de septiembre de 2007

SQL Server 2005 presenta la sugerencia de consulta USE PLAN. USE PLAN se puede utilizar para hacer que el optimizador de consultas utilice un plan de consulta determinado para una consulta. La sugerencia de consulta USE PLAN funciona aceptando como argumento el plan de consulta que se desea utilizar en formato XML. Utilice USE PLAN si sabe que existen planes más adecuados para consultas cuyos planes retrasan los tiempos de ejecución. Un caso habitual es el de consultas que se ejecutaban correctamente en una versión anterior de SQL Server pero no lo hacen en una versión actualizada, ya sea una actualización de versión completa o mediante Service Pack. Aunque en una actualización la mayoría de los tiempos de ejecución normalmente tendrán un rendimiento similar o superior, puede haber excepciones. La sugerencia de consulta USE PLAN está disponible para los casos en los que se prefiere un plan de consulta seleccionado por el optimizador de consultas en una versión anterior del producto, y no el seleccionado después de la actualización.

La sugerencia de consulta USE PLAN se puede utilizar con guías de plan para solucionar problemas de mal funcionamiento de las consultas en aplicaciones implementadas. Las guías de plan se utilizan para aplicar sugerencias de consulta a las consultas cuando no se puede o no se desea cambiar la aplicación directamente. Para obtener más información acerca de las guías de plan, vea Optimizar consultas en aplicaciones implementadas mediante guías de plan. Para obtener escenarios más detallados donde se muestre cómo aplicar la sugerencia de consulta USE PLAN en guías de plan, vea Escenario para forzar planes: crear una guía de plan que utiliza una sugerencia de consulta USE PLAN y Escenario para forzar planes: crear una guía de plan para forzar un plan obtenido a partir de una consulta que se ha vuelto a escribir.

Los planes forzados se pueden utilizar para la mayoría de los tipos de consultas SELECT. Las consultas se incluyen en tablas, índices agrupados y no agrupados, vistas indizadas y tablas e índices con particiones. USE PLAN no se puede especificar con las instrucciones INSERT, UPDATE o DELETE.

Los planes de consulta generados con la sugerencia de consulta USE PLAN se almacenan en memoria caché igual que otros planes de consulta.

Limitaciones de los planes forzados

Cuando se fuerzan los planes, una consulta queda limitada a un único plan de ejecución estático. Asimismo, se impide que el optimizador de consultas se adapte a los distintos tamaños y distribuciones de datos, nuevos índices y otras variables. Por estos motivos, forzar los planes puede producir problemas de rendimiento si no se realiza correctamente. Se recomienda forzar los planes únicamente después de haber estudiado otras opciones para mejorar el rendimiento de la consulta, como utilizar estadísticas precisas y actualizadas e índices optimizados. Se recomienda limitar su uso y, en tal caso, dejarlo en manos de administradores de bases de datos y desarrolladores expertos que conozcan los problemas de rendimiento y el entorno cambiante de la base de datos y las aplicaciones.

Cuando se utilice la sugerencia de consulta USE PLAN para influir en la compilación de una consulta en una aplicación implementada, debería incluirse en una guía de plan en lugar de incrustarse directamente en la aplicación. Con ello, se pueden solucionar situaciones como las siguientes:

  • La sugerencia se puede cambiar o quitar sin modificar ni volver a compilar la aplicación. En casos limitados, es posible que una sugerencia USE PLAN aplicable en una versión de SQL Server no se pueda aplicar en futuros Service Pack o versiones. Por tanto, quizás tenga que cambiar o quitar la sugerencia USE PLAN después de implementar la aplicación.
  • Se puede evitar el uso de una sugerencia grande directamente en la consulta. De esta forma, la lectura de la consulta es más fácil.
    ms186343.note(es-es,SQL.90).gifImportante:
    Al crear una guía de plan con USE PLAN, durante la fase de comprobación se debería comprobar si la consulta cuyo plan se desea forzar suele enviarse con una solicitud de cursor. Los planes de consulta de las consultas basadas en cursor son diferentes de los de las consultas sin cursores. Por tanto, para crear una guía de plan que especifique una sugerencia USE PLAN aplicable a una consulta enviada con una solicitud de cursor, la guía de plan debe especificar un plan de cursor. Para obtener más información, vea Usar la sugerencia de consulta USE PLAN en consultas con cursores.

No se pueden forzar planes para los siguientes tipos de consultas en SQL Server 2005:

  • Consultas con cursores dinámicos, cursores controlados por conjunto de claves y cursores de sólo avance. Se admiten los cursores estáticos y de sólo avance rápido. Para obtener más información, vea Usar la sugerencia de consulta USE PLAN en consultas con cursores.
  • Consultas distribuidas.
  • Consultas de texto.
  • Instrucciones de inserción, eliminación y actualización.

Vea también

Conceptos

Especificar planes de consulta mediante la exigencia de planes

Otros recursos

Rendimiento de las consultas

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

15 de septiembre de 2007

Contenido modificado:
  • Se corrigió la instrucción incorrecta sobre que los planes de consulta generados con USE PLAN no se almacenarán en memoria caché si el literal de cadena resultante tiene más de 8 KB.