2011-11-25 45 views
4

我的用户表有超过26列,这是正常的吗?当这个用户表引起了我的注意时,db已经被归一化到了第三级。有26列是好的还是有一些其他的优化技术,当你设计你的分贝,我应该做的?MySQL:优化大量列的表

更多:什么是分区您的表?

+1

那么,如果你必须存储一个用户的26个独特属性,那么有26个列就没有什么问题了:)我想说的是:我们不知道上下文就说不出来。但我认为你只需通过每一个标准化步骤就可以简单地弄清楚自己。 – Quasdunk

+0

当你问这样的问题时,总是发布DDL。规范化基于依赖关系;规范化从不问“有多少列?”。 –

回答

4

26列没有错,但如果它们很少使用,那么它的不同。

不是使用26列,而是使用少用的一个,并使用序列化字符串对它们进行分组。

将字段更改为文本字段,然后在您的代码中,您可以反序列化并使用它们。如果您需要更新,请更新数组(从您的代码中),然后序列化并将其保存到数据库。

+2

这种方法的优点是什么?那些“很少使用”(你的意思是通常是NULL还是很少被查询?)列不太可能影响你的数据库的性能。但查询序列化数据*将成为PITA。 :) –

+0

你说的是我可以结合我认为最慢的移动列的字段的值。通过对它们进行分组,你的意思是将它们保存为PHP中的字符串,然后将该字符串放入数据库中?我从来没有这样做过......听起来很舒服。 – enchance

+1

我的意思是,如果你有例如:背景颜色的值不会经常改变,所以你选择+反序列化然后使用它。串行化数据的串行化与字符串相同,但您只需在插入时序列化并在读取时反向。 PLUS:如果您需要添加更多列,您不必更改ALTER表,只需在阵列中添加一个KEY,即可完成 – Gabriel