Estou configurando uma tabela que pode ter mais de 70 colunas. Agora estou pensando em dividi-lo, pois alguns dos dados nas colunas não serão necessários sempre que a tabela for acessada. Então, novamente, se eu fizer isso, terei que usar junções.
Em que ponto, se houver, são consideradas colunas em excesso?
Respostas:
É considerado muito porque está acima do limite máximo suportado pelo banco de dados .
O fato de você não precisar que todas as colunas sejam retornadas por todas as consultas é perfeitamente normal; é por isso que a instrução SELECT permite nomear explicitamente as colunas de que você precisa.
Como regra geral, a estrutura de sua tabela deve refletir seu modelo de domínio; se você realmente tem 70 (100, o que você tem) atributos que pertencem à mesma entidade, não há razão para separá-los em várias tabelas.
fonte
select count(*) from votes
todas as vezes ou você acha que talvez seja desnormalizado? Isso torna o banco de dados do SO ruim e Jeff Atwood louco?Existem alguns benefícios em dividir a tabela em várias com menos colunas, o que também é chamado de Particionamento Vertical . Aqui estão alguns:
Se você tiver tabelas com muitos registros, a modificação dos índices pode levar muito tempo, pois o MySQL precisa reconstruir todos os índices na tabela. Ter os índices divididos em várias tabelas pode tornar isso mais rápido.
Dependendo de suas consultas e tipos de coluna, o MySQL pode estar gravando tabelas temporárias (usadas em consultas de seleção mais complexas) no disco. Isso é ruim, pois o disco I / O pode ser um gargalo grande. Isso ocorre se você tiver dados binários (texto ou blob) na consulta.
Uma tabela mais ampla pode levar a um desempenho de consulta mais lento.
Não otimize prematuramente, mas em alguns casos, você pode obter melhorias com tabelas mais estreitas.
fonte
É demais quando viola as regras de normalização. É muito difícil obter tantas colunas se você estiver normalizando seu banco de dados. Projete seu banco de dados para modelar o problema, não em torno de regras artificiais ou idéias sobre otimização para uma plataforma de banco de dados específica.
Aplique as seguintes regras à tabela ampla e você provavelmente terá muito menos colunas em uma única tabela.
Aqui está um link para ajudá-lo.
fonte
It is pretty hard to get that many columns if you are normalizing your database.
Não é tão difícil quanto parece.Isso não é um problema, a menos que todos os atributos pertençam à mesma entidade e não dependam uns dos outros. Para tornar a vida mais fácil, você pode ter uma coluna de texto com matriz JSON armazenada nela. Obviamente, se você não tiver problemas em obter todos os atributos todas as vezes. Embora isso anularia totalmente o propósito de armazená-lo em um RDBMS e complicaria muito todas as transações do banco de dados. Portanto, não é recomendável seguir essa abordagem em todo o banco de dados.
fonte
Ter muitas colunas na mesma tabela pode causar grandes problemas na replicação também. Você deve saber que as mudanças que acontecem no mestre irão replicar para o escravo .. por exemplo, se você atualizar um campo na tabela, toda a linha será w
fonte