Cita:
Empezado por erickperez6
Me gustaria saber si tener una base de datos fuertemente diseńada con llaves foraneas puede incidir con el decrecimiento del performance de la db?
|
Sí.
Cita:
Empezado por erickperez6
Estoy claro que una base de datos ampliamente relacionada con llaves foraneas decrece la velocidad en los insert, update, delete por lo constantes chequeos/cambios que tiene que hacer antes de aplicar los cambios
|
La lógica es correcta.
Otro problema (y gordo) es lo que eso implica.
Es algo así como decir: "Si a un coche le quitamos los frenos, las luces, los asientos, los cinturones,... żCorrerá más?"
RESPUESTA: Sí. Pesa menos, por lo tanto correrá más. El problema vendrá cuando tengas que parar/frenar...



Si quitas TODAS las foráneas de una Base de datos habrá algunas operaciones que irán más rápido, cierto; El problema son las prestaciones que estás perdiendo a cambios.
Si hablamos de "casos especiales" y por lo tanto no generalizamos, puede ser conveniente "desactivar claves foráneas" para ganar velocidad, como puede ser un proceso de carga masiva o de copia de datos; Pero simplemente porque se asumen unas condiciones (los datos son correctos y vienen de una fuente
donde sí están relacionados con claves) que so se pueden asumir en otros casos y deben tratarse como especiales. De ahí, que muchas bases de Datos (como alguien ha comentado) tengan la opción de desactivar estas comprobaciones
de forma momentánea (desactivar, no eliminar).
He visto Base de Datos sin foráneas, donde había comprobaciones mediante triggers y algunas otras donde se hacían por programa (delphi); Al final, el tiempo de comprobación hay que "perderlo" igual, sea en el Trigger o en el código Delphi.
Salvo que haya una razón para no hacerlo mediante una clave foránea, no veo razón para programar una cosa que ya está hecha.