2012-05-30 101 views
2

現在我要修改proc中的一個SQL,唯一的修改是在select子句中添加一個列,用nvl和to_char函數,在where子句中沒有修改。
我的問題是,這個修改是否會導致任何性能問題?Oracle Nvl和to_char函數

的SQL演示是象下面這樣:

原始SQL:

Select a.c1, b.c2 from a, b where a.c3=b.c4 

修改後:

Select a.c1, b.c2, nvl(to_char(b.c5,'FM00000000'), '.  ') As c5 from a, b where a.c3=b.c4 

感謝

回答

0

這種變化是不太可能造成noticable性能下降。

oracle查詢中成本最高的部分將是您的連接和where子句指定的數據選擇。你沒有改變這一點。你返回的行數是相同的。由於兩個函數調用返回的每行返回的成本非常低,並且每行返回的數據稍多一些,但與行選擇相比,這可能是可以忽略的。

+0

如果b(c4,c2)上存在索引並且執行計劃使用僅索引檢索,它可能會產生顯着影響。 –