日期:2014-05-17  浏览次数:20655 次

字段数一般多少个合适?
有一个存储结构,需要30~40个字段,数字类型居多。

需要分表吗?用inner join分表后变得慢很多,虽然有外键关联。但还是慢。像一个表多不和个字段合适呢?

------解决方案--------------------
分表不是根据大小,,
一般根据业务来考虑
比如你的表有30个字段,每次都会用到这30字段,一个不少
好吧,显然你这30个字段表设计是合理的
你吧它拆成2个15个字段,结果就是每次查询都会去inner join一次,没有任何意义

但实际情况并不是这样,我们不太可能每次用到所有字段,特别是大字段不可能每次都需要被读取
那么就只有根据你的程序的使用这个表的实际情况拆分

而使用情况,一般就是根据三范式设计,再考虑上程序应用的适当冗余。再考虑上大字段问题
这个是一个设计经验问题,没有什么肯定必须多大就分表。
当然存在性能问题就该考虑分表是对的。
而且分表也要考虑横向纵向分拆问题。



------解决方案--------------------
字段数一般没有一般的规定,要看你的业务,有时候可能一个表存了很多列,但是又恰恰好在很少冗余的情况下,只需要访问单表就能获取你要的数据,那么这个时候效率往往都很高,因为完全不需要什么关联了。在论坛里面听说过有过百列的,所以你那个级别也没啥。切记要设计合理。至于分表,除非已经到了压力且没有什么可用方法,否则不建议优先考虑分表,因为它有些不好管理,且如果你不了解自己的数据,可能分区的速度远慢于单表。

对于nvarchar(500)这类型的列,在它上面的索引基本上已经无效了(不是绝对无效),如果它仅仅是存数据,而不是频繁用于排序、关联、聚合等操作,那么不用在乎太多。