詢問sql語句優化測試方法以下2句怎么測試出哪句性能更好?sel 愛問
這兩個SQL語句看起來都未能使用上索引,都是tablescan表掃操作,但是第一個SQL語句用了兩個LIKE,一個NULL的判斷。
一般情況下,IS NOT NULL比IS NULL的判斷更耗費資源。第二個SQL語句用了+運算和一個LIKE,好象比第一個性能要好一些。
但是當我在ASA中,隨意造了一個將近60萬條數據的堆表后,分別在PB中執行Explain SQL,分別顯示上面兩個SQL語句的執行計劃如下(表名我用的是test,字段分別是aa,bb): 1:( Plan [ Total Cost Estimate: 32。 96008 ] ( TableScan test[ ( ( test。
aa >= '' : 100% Statistics ) AND ( test。aa LIKE '%轉讓%' : 100% Computed ) ) OR ( ( >= '' : 100% Statistics ) AND ( LIKE '%轉讓%' : 100% Computed ) ) : 100% Combined ] ) ) 2:( Plan [ Total Cost Estimate: 32。
96008 ] ( TableScan test[ ( expr( test。aa, ) >= '' : 25% Guess ) AND ( expr( test。
aa, ) LIKE '%轉讓%' : 100% Computed ) ] ) ) 結果是兩個SQL語句的Total Cost Estimate都是一樣,所以直接從表面上看,很難判斷究竟哪個SQL性能更優,建議最好能夠在實際執行環境中測試一下。 當然WHERE條件越簡單,并且能夠優化使用上索引是最好的! 。