Síntomas
Suponga que tiene una tabla con una restricción de clave externa configurada para eliminarse en cascada y las estadísticas de la columna de clave externa no abarcan todo el rango de los valores de clave de la tabla (por ejemplo: porque las estadísticas no se actualizaron después de que la distribución de datos cambie en la tabla). En este escenario, al intentar eliminar una fila correspondiente a un valor clave no representado en el histograma de estadísticas y el optimizador de consultas está usando la estimación de cardinalidad predeterminada, la operación de eliminación es más lenta de lo esperado. Es posible que también observe que se usa una operación de examen de índice para buscar las filas coincidentes en la tabla de referencia.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Resolución
Este problema se ha corregido en las siguientes actualizaciones acumulativas para SQL Server:
Nota: Esta corrección solo está habilitada al activar las revisiones de optimización (ya sea a través de la opción de configuración de ámbito de la base de datos, sugerencia de consulta o indicador de seguimiento 4199).
Acerca de las actualizaciones acumulativas para SQL Server:
Cada nueva actualización acumulativa de SQL Server contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Consulte las últimas actualizaciones acumulativas para SQL Server:
Solución
Para resolver este problema, utilice uno de los métodos siguientes:
-
Use la estimación de cardinalidad heredada. Para obtener más información, vea Estimación de cardinalidad (SQL Server).
-
Quite la eliminación en cascada de la definición de clave externa y ejecute la operación de eliminación mediante JOIN entre tablas principales y secundarias para lograr el equivalente de eliminación en cascada.
-
Actualice las estadísticas en la tabla principal con FULLFOS antes de eliminar datos.
Referencias
Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.