sql >> Base de Datos >  >> RDS >> Mysql

¿Qué tan costosos son los JOIN en SQL? Y/o, ¿cuál es el equilibrio entre el rendimiento y la normalización?

La mejor práctica es siempre comience con 3NF y luego solo considere la desnormalización si encuentra un problema de rendimiento específico.

El rendimiento es solo uno de los problemas con los que tiene que lidiar con las bases de datos. Al duplicar datos, corre el riesgo de permitir que haya datos inconsistentes en su base de datos, anulando así uno de los principios básicos de las bases de datos relacionales, la consistencia (la C en ACID ).

Sí, las uniones tienen un costo, no hay forma de evitarlo. Sin embargo, el costo suele ser mucho menor de lo que piensa y, a menudo, puede verse abrumado por otros factores, como los tiempos de transmisión de la red. Al asegurarse de que las columnas relevantes estén indexadas correctamente, puede evitar muchos de esos costos.

Y recuerde el mantra de la optimización:¡mida, no adivine! Y mida en un entorno de producción. Y mantener medir (y ajustar) periódicamente:la optimización es solo una operación de configuración y olvido si su esquema y datos nunca cambian (muy poco probable).

La reversión por rendimiento generalmente se puede hacer segura mediante el uso de disparadores para mantener la consistencia. Esto, por supuesto, ralentizará sus actualizaciones, pero aún puede permitir que sus selecciones se ejecuten más rápido.