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

豆豆网   技术应用频道   2007年05月20日  【字号: 收藏本文

本文详细介绍基于DB2的数据库应用系统的性能优化

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

责编:豆豆技术应用

正在加载评论...