Estoy configurando una tabla que podría tener más de 70 columnas. Ahora estoy pensando en dividirlo, ya que algunos de los datos de las columnas no serán necesarios cada vez que se acceda a la tabla. Por otra parte, si hago esto, me quedo con tener que usar combinaciones.
¿En qué momento, si corresponde, se considera que hay demasiadas columnas?
Respuestas:
Se considera demasiados una vez que supera el límite máximo admitido por la base de datos .
El hecho de que no necesite que todas las columnas sean devueltas por cada consulta es perfectamente normal; es por eso que la instrucción SELECT le permite nombrar explícitamente las columnas que necesita.
Como regla general, la estructura de su tabla debe reflejar su modelo de dominio; si realmente tiene 70 (100, qué hay) atributos que pertenecen a la misma entidad, no hay razón para separarlos en varias tablas.
fuente
select count(*) from votes
cada vez o cree que tal vez esté desnormalizado? ¿Eso hace que la base de datos SO sea mala y que Jeff Atwood se vuelva loco?Hay algunos beneficios de dividir la tabla en varias con menos columnas, lo que también se denomina Partición vertical . A continuación, presentamos algunos:
Si tiene tablas con muchas filas, modificar los índices puede llevar mucho tiempo, ya que MySQL necesita reconstruir todos los índices de la tabla. Tener los índices divididos en varias tablas podría hacerlo más rápido.
Dependiendo de sus consultas y tipos de columna, MySQL podría estar escribiendo tablas temporales (utilizadas en consultas de selección más complejas) en el disco. Esto es malo, ya que la E / S de disco puede ser un gran cuello de botella. Esto ocurre si tiene datos binarios (texto o blob) en la consulta.
Una tabla más amplia puede provocar un rendimiento de consulta más lento.
No optimice prematuramente, pero en algunos casos, puede obtener mejoras de tablas más estrechas.
fuente
Son demasiados cuando viola las reglas de normalización. Es bastante difícil obtener tantas columnas si está normalizando su base de datos. Diseñe su base de datos para modelar el problema, no alrededor de reglas artificiales o ideas sobre la optimización para una plataforma de base de datos específica.
Aplique las siguientes reglas a la tabla amplia y probablemente tendrá muchas menos columnas en una sola tabla.
Aquí hay un enlace para ayudarlo.
fuente
It is pretty hard to get that many columns if you are normalizing your database.
No es tan difícil como parece.Eso no es un problema a menos que todos los atributos pertenezcan a la misma entidad y no dependan unos de otros. Para hacer la vida más fácil, puede tener una columna de texto con una matriz JSON almacenada en ella. Obviamente, si no tiene problemas para obtener todos los atributos cada vez. Aunque esto frustraría por completo el propósito de almacenarlo en un RDBMS y complicaría mucho cada transacción de la base de datos. Por lo tanto, no se recomienda seguir un enfoque en toda la base de datos.
fuente
Tener demasiadas columnas en la misma tabla también puede causar grandes problemas en la replicación. Debe saber que los cambios que ocurren en el maestro se replicarán en el esclavo ... por ejemplo, si actualiza un campo en la tabla, toda la fila será w
fuente