Pergunta

Eu tenho 8 conjuntos de dados de cerca de 30.000 linhas para cada conjunto, os dados são a mesma estrutura apenas para diferentes idiomas.

A extremidade dianteira do site terá um tráfego relativamente elevado.

Então, minha pergunta é em relação ao desempenho MySQL, se eu deveria ter uma única tabela com uma coluna para distinguir qual definir os dados pertence (ou seja coloumn "linguagem") ou criar tabelas individuais para cada conjunto de idiomas?

(uma explicação sobre por que se possível seria realmente útil)

Obrigado antecipadamente Shadi

Foi útil?

Solução

Eu iria com o design da tabela única. Tempo de busca, com o índice adequado, deve ser exatamente o mesmo, não importa o quão "grande" mesa é.

Além de problemas de desempenho, isso vai simplificar o design e relações com outras tabelas (chaves estrangeiras etc).

Outras dicas

Outra desvantagem para o projeto "uma tabela por idioma" é que você tem que mudar seu esquema de cada vez que você adicionar um.

meios coluna de idioma A você só tem que adicionar dados, que não é intrusiva. O último é o caminho a percorrer.

Eu iria com design de uma mesa também. Desde a cardinalidade do language_key é muito baixo, eu particionar a tabela sobre language_key em vez de definir um índice. (Se o seu banco de dados suporta isso.)

Concordo com as outras respostas - eu usaria de uma única tabela. Com relação à otimização de desempenho de uma série de coisas que têm o potencial para ter um impacto maior no desempenho:

  • indexação apropriado
  • escrita / testar para a eficiência consulta
  • chosing mecanismo de armazenamento apropriado (s)
  • hardware
  • tipo e configuração do sistema de ficheiros (s)
  • otimização mysql configuração configurações

... etc Eu sou um fã de High Performance MySQL

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top