可以提高数据库查询性能的反规范设计

作者:数据库|查询|性能  来源:网络  【打印此文】【
数据的反规范

◆反规范的好处

是否规范化的程度越高越好?这要根据需要来决定,因为“分离”越深,产生的关系越多,关系过多,连接操作越频繁,而连接操作是最费时间的,特别对以查询为主的数据库应用来说,频繁的连接会影响查询速度。所以,关系有时故意保留成非规范化的,或者规范化以后又反规范了,这样做通常是为了改进性能。例如账户系统中的“账户”表B-TB01,它的列busi-balance(企业账户的总余额)就违反规范,其中的值可以通过下面的查询获得:

 

select busi-code,sum(acc-balance)   
from B-TB06    
group by busi-code

如果B-TB01中没有该列,若想获得busi-name(企业名称)和企业账户的总余额,则需要做连接操作:

select busi-name,sum(acc-balance)    
from B-TB01,B-TB06    
where B-TB01.busi-code=B-TB06.busi-code    
group by busi-code

  

如果经常做这种查询,则就有必要在B-TB01中加入列busi-balance,相应的代价则是必须在表B-TB06上创建增、删、改的触发器来维护B-TB01表上busi-balance列的值。类似的情况在决策支持系统中经常发生。  

反规范的好处是降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,相应带来的问题是可能出现数据的完整性问题。加快查询速度,但会降低修改速度。因此决定做反规范时,一定要权衡利弊,仔细分析应用的数据存取需求和实际的性能特点,好的索引和其它方法经常能够解决性能问题,而不必采用反规范这种方法。 

[1] [2] [3] 下页  




久尚整理     更多关于可以提高数据库查询性能的反规范设计 的文章

{$Title}
搜索:

CSS样式表制作文字

不安装和修改文件

周付联盟推荐第九

QQ免费电子密保卡

QQ邮箱再更新 优化