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

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