WEB开发网
开发学院数据库DB2 DB2 LUW SQL 调优指南 阅读

DB2 LUW SQL 调优指南

 2010-02-04 00:00:00 来源:WEB开发网   
核心提示: 检查是否可以使用 Fetch First N Rows Only 子句,不同的应用对 SQL 语句返回给应用的结果集的要求是不同的,DB2 LUW SQL 调优指南(5),有时候应用往往更关注系统的反应时间,只需要在第一时间看到少量的结果就能得到满足,为了避免出现没有下推的情况,在编写 SQL

检查是否可以使用 Fetch First N Rows Only 子句。不同的应用对 SQL 语句返回给应用的结果集的要求是不同的。有时候应用往往更关注系统的反应时间,只需要在第一时间看到少量的结果就能得到满足,在设计 SQL 语句时可以考虑使用 Fetch First N Rows Only 或 Optimize For N Rows 子句。如在分页显示结果集时,第一页只要求呈现给用户 10 行数据,就可以使用下面的语句,

 select * from T order by id fetch first 10 rows only 

下一页的数据可以在后台并行处理查出,这样对用户来讲系统查询效率很高。再如,在取一个列中的最大值时,下面语句,

 select max( c1 ) from T 

可以写成,

 select c1 from T order by c1 fetch first row only 

如果列 c1 上有索引,上面的 SQL 可以利用索引扫描直接得到 c1 的最大值,避免了对 T 的全表扫描。

7. 外连接(Outer Join)

检查 Outer Join 的使用是否必要。Outer Join 会限制连接的顺序,从而导致一些较好的计划无法生成。所以如果不是必须,要避免使用 Outer Join,无论是 Left、Right 或者 Full Outer Join。

8. Having 子句

检查 Having 子句中的谓词是否可以下推。如果有可能,应尽可能把 Having 子句中的谓词转成 Where 子句的谓词。一般情况下,根据一定的规则,Having 子句如果不含有聚合函数,会经过逻辑优化被下推到 Where 子句里面,但也会出现不下推的情况。为了避免出现没有下推的情况,在编写 SQL 时就应尽量将能下推的谓词写在 Where 子句里面。

9. 带 DISTINCT 的聚集函数

检查是否同时使用了多个带 DISTINCT 的聚集函数,比如:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:DB LUW SQL

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