如果我有一个表,有4个字段A,B,C,D,A是主键;
如果我将这个表拆成三个表,A,B和A,C和A,D。
那么,以前我要插入一条记录是insert一次,现在就要insert三次。
这样是不是性能会变差呢?
你好,
应该只是出现了2个冗余列而已~如果说这样的简易操作会使得SQL性能变慢的话~
那么你可以说所有的大部分企业开发里报表的SQL性能都会比这操作差N倍了.
以上之是个例子。
你可以吧B、C、D分别看成是十个列。
@Conan:
那也就是说 冗余列A 将会出现更多次?
比较诡异的是,你的需求是什么?三个表都是A是主键????打个比方,一个对象ID作为主键,对象表,对象的附加属性表已经没必要用对象ID,而用附加属性ID作为主键,该附加属性ID作为对象表中的一个外键既可。因为这样可以减少冗余,当有很多对象的属性相同时。如果你回答我压根就没有两个对象的属性相同,那么完全可以放到一个表里面。除非你系统很大,你需要面向对象的逻辑关系。
其实根本没必要把表拆分,.分表是很难管理的.
如果你硬要这么做,就看你的表是用来查询的还是插入的了,
如果老对这个表插入,那么你一次要插入3张表,性能肯定没有一条记录那么好
如果是查询的话,分3个表也不好查,每次查询都要3张表关联
在实际项目中不一定要实现第三范式,适当的冗余是可以的