数据库表table1(a, b, c, d, e, f, g, h, i, j, k, l, m, n)
a为主键
列n常常被修改,b, c, d, e, f, g, h, i, j, k, l, m,很少修改.请问我是不是需要把表修改为:
(a, b, c, d, e, f, g, h, i, j, k, l, m)
(a, n)个人觉得分为两个表有冗余, 但别人说可以提高性能.请问这样是不是真的能提高性能?
a为主键
列n常常被修改,b, c, d, e, f, g, h, i, j, k, l, m,很少修改.请问我是不是需要把表修改为:
(a, b, c, d, e, f, g, h, i, j, k, l, m)
(a, n)个人觉得分为两个表有冗余, 但别人说可以提高性能.请问这样是不是真的能提高性能?
如果有代码生成器与O/R Mapping工具,这种任务量就会减小.
一是一开始就把一个对象的所有属性权放到一张表里,然后通过保证函数依赖及无损联结进行分解,显然,这只是增加了数据库的更新性能,却降低了数据库的查询性能,于是我们应该参照数据库的反规范化设计,寻求一个最佳结合点。
二是一开始就按照E-R 的九部设计模式设计出E—R图,然后再将E-R 模型转换为数据库的表结构。
所以就查询而言效率未必有什么提升。只是频繁修改数据会造成表空间膨胀很快而已,这样会对数据查询有影响,只要做好数据库经常性的维护,理论上没有什么影响。就如上面有人说的,至于分表的一对一设计问题,具体要看业务逻辑的需求,不能因数据变更的频繁程度这一说法来简单划分。不管怎样 ,划分表后总是要做联合查询的,多了IO,HASH肯定也是损失性能的。至于优劣,真的需要看具体业务