2016-03-28 16 views
0

Bir Oracle 11g tablosundaki bir sütundaki NULL değerlerini dizine eklemek için işlev tabanlı bir dizin oluşturmak istiyorum.İşlev tabanlı bir dizin için daha iyi performans: NVL2 veya DECODE?

Daha iyi performans: NVL2 veya DECODE?

NVL2(nr.processed_datetime,'Y','N')
veya DECODE(nr.processed_datetime,NULL,'N','Y')

+1

kordirko, kendi sonuçlardan birini revers gerekir: 'NVL2 (null, 2,1)' – ScrappyDev

+1

Eğer test ettiniz Verileriniz ile çevreniz? Performans açısından ölçülebilir bir farkın olması muhtemel görünmüyor (sorgularınızı yaptığınız her şey indeksinizi kullandıysanız). –

+0

Dizin yapısı bu iki işlevden çok daha ağırdır, bu nedenle bazı önemli farkları görmeniz mümkün değildir. Benim için nvl2 burada daha doğal. –

cevap

0


bir sütun değeri null veya herhangi bir işlev kullanmaya gerek Eğer boş değil bulmak için. SQL'inde durumun kullanımı NULL veya IS NULL değil

nr.processed_datetime NULL; veya nr.processed_datetime NULL DEĞİLDİR; Daha iyi performans için

, o sütunda sadece sandık, normal endeksi bir sorun olmaz olabilir

+1

Oracle, NULL dizinini SAĞLAMIYOR. – ScrappyDev