WEB开发网
开发学院数据库DB2 基于DB2的数据库应用系统的性能优化 阅读

基于DB2的数据库应用系统的性能优化

 2007-05-20 16:20:06 来源:WEB开发网   
核心提示: ●如果待排序的列有多个,可以在这些列上建立复合索引(compound index),基于DB2的数据库应用系统的性能优化(3),即索引由多个字段复合而成,查询优化现在的数据库产品在系统查询优化方面已经做得越来越好,SQL查询可以层层嵌套,例如在一个大型分布式数据库系统中,但由于用户提交的S

●如果待排序的列有多个,可以在这些列上建立复合索引(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)

上一页  1 2 3 4 5  下一页

Tags:基于 DB 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接