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

A introdução de chaves estrangeiras no MySQL reduz o desempenho


Supondo:
  1. Você já está usando um mecanismo de armazenamento compatível com FKs (ou seja:InnoDB)
  2. Você já tem índices nas colunas envolvidas

Então eu acho que você terá um melhor desempenho fazendo com que o MySQL imponha a integridade. Reforçar a integridade referencial é, afinal, algo que os mecanismos de banco de dados são otimizados para fazer. Escrever seu próprio código para gerenciar a integridade em Ruby será lento em comparação.

Se você precisar migrar do MyISAM para o InnoDB para obter a funcionalidade FK, precisará considerar as compensações no desempenho entre os dois mecanismos.

Se você ainda não tem índices, você precisa decidir se os quer. De um modo geral, se você está fazendo mais leituras do que gravações, você quer (precisa, até) os índices.

Empilhar um FK em cima de coisas indexadas no momento deve causar menos impacto no desempenho geral do que implementar esses tipos de verificações no código do aplicativo.