深入说明DB2数据库运用体系的功用优化-2
 
假定待排序的列有多个,可以在这些列上创建复合索引(compound index),即索引由多个字段复合而成。 
◆查询优化 
目下当今的数据库产物在体系查询优化方面曾经做得越来越好,但因为用户提交的SQL语句是体系优化的根基,很难想象一个原来蹩脚的查询筹算经由体系的优化之后会变得高效,是以用户所写语句的利害至关紧张。下面重点说明改善用户查询筹算的办理方案。 
1.排序 
在良多时辰,该当简化或休止对大型表停止反复的排序。当可以运用索引主动以恰当的次序递次产生输入时,可以休止排序的步调,当以下的情形产生时,排序就不克不及省略: 
索引中不包罗一个或几个待排序的列; 
group by或order by子句中列的次序递次与索引的次序递次纷例如样; 
排序的列来自差其余表。 
为了休止不需要的排序,就要正确地增建索引,合理地合并数据库表,虽然无意能够影响表的规范化,但相搪塞听命的提高是值得的。假定排序不行休止,那么该当试图简化它,如裁汰排序列的范围等。 
2.主键 
主键用整型会极大的提高查询听命,而字符型的斗劲开支要比整型的斗劲开支大良多,用字符型数据作主键会使数据拔出、更新与查询的听命低落。数据量小的时辰这点低落能够不会被注重,可是当数据量大的时辰,小的改造也可以提高体系的相应速度。 
3.嵌套查询 
在SQL言语中,一个查询块可以作为另一个查询块中谓词的一个操纵数。是以,SQL查询可以层层嵌套。例如在一个大型散布式数据库体系中,有订单表Order、订单信息表OrderDetail,假定需求两表联络关系查询: 
SELECT CreateUser 
FROM Order 
WHERE OrderNo IN 
( SELECT OrderNo 
FROM OrderDetail 
WHERE Price=0.5) 
 
 
在这个查询中,找出报纸单价为0.5元的收订员名单。上层查询前去一组值给上层查询,然后由上层查询块再根据上层块供给的值持续查询。在这种嵌套查询中,对上层查询的每一个值OrderNo,上层查询都要对表OrderDetail停止一切扫描,实施听命显然不会高。在该查询中,有2层嵌套,假定每层都查询1000行,那么这个查询就要查询100万行数据。在体系开支中,对表Order的扫描占82%,对表OrderDetail的搜刮占16%。假定我们用连接来改换,即: 
SELECT CreateUser 
FROM Order,OrderDetail 
WHERE Order.OrderNo=OrderDetail.OrderNo AND Praice=0.5 
 
 
来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0128/46640_2.html
版权声明:
原创作品,许可转载,转载时请务必以超链接情势标明文章 原始出处 、作者信息和本声明。否则将追究执法责任。
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号