Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Quão caros são os JOINs no SQL? E/ou, qual é a relação entre desempenho e normalização?


A prática recomendada é sempre comece com 3NF e, em seguida, considere apenas a desnormalização se encontrar um problema de desempenho específico.

O desempenho é apenas um dos problemas que você tem que lidar com bancos de dados. Ao duplicar dados, você corre o risco de permitir que dados inconsistentes estejam em seu banco de dados, anulando assim um dos princípios fundamentais dos bancos de dados relacionais, consistência (o C em ACID ).

Sim, as junções têm um custo, não há como contornar isso. No entanto, o custo geralmente é muito menor do que você imagina e muitas vezes pode ser inundado por outros fatores, como tempos de transmissão da rede. Ao garantir que as colunas relevantes sejam indexadas corretamente, você pode evitar muitos desses custos.

E lembre-se do mantra de otimização:meça, não adivinhe! E meça em um ambiente de produção. E manter medindo (e ajustando) periodicamente - a otimização é apenas uma operação de definir e esquecer se seu esquema e dados nunca mudarem (muito improvável).

A reversão para desempenho geralmente pode ser feita com segurança usando gatilhos para manter a consistência. Isso, é claro, diminuirá a velocidade de suas atualizações, mas ainda poderá permitir que suas seleções sejam executadas mais rapidamente.