sql >> Base de Datos >  >> RDS >> Sqlserver

¿Hay un impacto severo en el rendimiento por usar claves foráneas en SQL Server?

Hay un pequeño impacto en el rendimiento de las inserciones, actualizaciones y eliminaciones porque se debe verificar el FK. Para un registro individual, esto normalmente sería tan leve que pasaría desapercibido, a menos que comience a tener una cantidad ridícula de FK asociados a la tabla (Claramente, lleva más tiempo verificar 100 tablas distintas de 2). Esto es algo bueno, no malo, ya que las bases de datos sin integridad no son confiables y, por lo tanto, son inútiles. No debe cambiar la integridad por la velocidad. Ese impacto en el rendimiento generalmente se compensa con la mejor capacidad para optimizar los planes de ejecución.

Tenemos una base de datos de tamaño mediano con alrededor de 9 millones de registros y FK en todos los lugares donde deberían estar y rara vez notamos un impacto en el rendimiento (excepto en una tabla mal diseñada que tiene más de 100 claves foráneas, es un poco lento eliminar registros de esto como todo hay que comprobarlo). Casi todos los administradores de bases de datos que conozco que se ocupan de grandes bases de datos de tamaño de terabytes y una verdadera necesidad de alto rendimiento en grandes conjuntos de datos insisten en las restricciones de clave externa porque la integridad es clave para cualquier base de datos. Si las personas con bases de datos del tamaño de un terabyte pueden permitirse un impacto de rendimiento muy pequeño, usted también puede hacerlo.

Los FK no se indexan automáticamente y, si no se indexan, esto puede causar problemas de rendimiento.

Honestamente, tomaría una copia de su base de datos, agregaría FK correctamente indexados y mostraría la diferencia de tiempo para insertar, eliminar, actualizar y seleccionar de esas tablas en comparación con lo mismo de su base de datos sin los FK. Demuestre que no provocará un impacto en el rendimiento. A continuación, muestre los resultados de las consultas que muestran registros huérfanos que ya no tienen significado porque la PK con la que están relacionados ya no existe. Es especialmente efectivo mostrar esto para las tablas que contienen información financiera ("Tenemos 2700 pedidos que no podemos asociar con un cliente" hará que la gerencia se siente y tome nota).