Síntomas
Supongamos que tiene instalado Microsoft SQL Server 2017 o 2019 y que se ejecuta con la estimación de cardinalidad (CE) predeterminada. Ejecuta una consulta que tiene un predicado de filtro en la columna Col1. Los predicados de consulta tienen INTRÍNSECOS UPPER, LOWER o RTRIM. Col1 tiene estadísticas que utilizará el optimizador. En esta situación, puede observar que las estimaciones de cardinalidad son inexactas y que SQL Server utiliza un plan ineficaz. A continuación se indican algunas consultas que tienen predicados:
SELECT person_id FROM Person WHERE (email LIKE UPPER(N'@live.com%'))
SELECT person_id FROM Person WHERE (email = UPPER(N'msft@live.com'))
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Resolución
Este problema se ha corregido en las siguientes actualizaciones acumulativas para SQL Server:
Acerca de las actualizaciones acumulativas para SQL Server:
Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:
- Actualización acumulativa más reciente para SQL Server 2019
- Actualización acumulativa más reciente para SQL Server 2017
Nota Esta corrección requiere una de las siguientes acciones para surtir efecto:
- QUERY_OPTIMIZER_HOTFIXES configuración del ámbito de la base de datos establecida en ON
- Usa la ENABLE_QUERY_OPTIMIZER_HOTFIXES SUGERENCIA DE USO
- Habilitar marca de seguimiento 4199
Referencias
Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.