DB2 LUW SQL 调优指南
2010-02-04 00:00:00 来源:WEB开发网检查是否可以使用 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 的聚集函数,比如:
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接