首页 新闻 搜索 专区 学院

SQL性能问题

0
[已解决问题] 解决于 2014-08-07 15:31

如果我有一个表,有4个字段A,B,C,D,A是主键;

如果我将这个表拆成三个表,A,B和A,C和A,D。

那么,以前我要插入一条记录是insert一次,现在就要insert三次。

这样是不是性能会变差呢?

Conan的主页 Conan | 初学一级 | 园豆:115
提问于:2011-09-10 22:22
< >
分享
最佳答案
0

你好,

应该只是出现了2个冗余列而已~如果说这样的简易操作会使得SQL性能变慢的话~

那么你可以说所有的大部分企业开发里报表的SQL性能都会比这操作差N倍了.

奖励园豆:5
dotNetDR_ | 老鸟四级 |园豆:2058 | 2011-09-10 23:48

以上之是个例子。

你可以吧B、C、D分别看成是十个列。

 

Conan | 园豆:115 (初学一级) | 2011-09-11 13:17

@Conan:

那也就是说 冗余列A 将会出现更多次?

dotNetDR_ | 园豆:2058 (老鸟四级) | 2011-09-11 13:19
其他回答(3)
0

比较诡异的是,你的需求是什么?三个表都是A是主键????打个比方,一个对象ID作为主键,对象表,对象的附加属性表已经没必要用对象ID,而用附加属性ID作为主键,该附加属性ID作为对象表中的一个外键既可。因为这样可以减少冗余,当有很多对象的属性相同时。如果你回答我压根就没有两个对象的属性相同,那么完全可以放到一个表里面。除非你系统很大,你需要面向对象的逻辑关系。

BLoodMaster | 园豆:135 (初学一级) | 2011-09-11 13:35
0

其实根本没必要把表拆分,.分表是很难管理的.

如果你硬要这么做,就看你的表是用来查询的还是插入的了,

如果老对这个表插入,那么你一次要插入3张表,性能肯定没有一条记录那么好

如果是查询的话,分3个表也不好查,每次查询都要3张表关联

dearz | 园豆:588 (小虾三级) | 2011-09-13 09:21
1

在实际项目中不一定要实现第三范式,适当的冗余是可以的

artwl | 园豆:16536 (专家六级) | 2011-09-13 10:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册