私はDECODEとNVLの機能のために内部的な作業がどのように行われているかを知りたがっています。 DECODE関数の引数の数が多い場合、DECODE関数のオーバーヘッドが増えますか?デコードとNVLの機能の違いは何ですか?
また、元の値がNULLでなくても、NVL関数はNULLの代わりに与えられた値を評価しますか? NVL(COL1、func_call()) の場合、COL1がNULLでなくてもfunc_call()が計算されます。その場合、COL1がまれにしかなく、func_call()が時間がかかる場合、パフォーマンスの問題が発生する可能性があります。事前に
おかげで
ありがとうございます@Kelly。なぜ私はこの質問に尋ねたのです。なぜなら、クエリで複数のNVLまたはDECODEを使用する必要がある状況に直面する傾向があるからです。このような状況では、どの機能がパフォーマンスの面でより適していますか? – Rohan
この場合、短絡するのでデコードを使用することがあります。 func_callに時間がかかる場合は、必要に応じて呼び出すほうがよいでしょう。また、NVLは本質的に短絡ではなく補完するほうが速いわけではありません。 – Kelly
他のもの:nvl(col1、nvl(col2、 '0'))のようなネストされたNVLを実行している場合、NVLを使用する状況では、これがcoalesce(col1、 col2、 '0') - 最初のnullでない引数を返します。 – Kelly