oracle nested loop lardan kaçınmak için use_hash ipucu

Veri ambarında çok sayıda kayıt içeren tabloları join lediğimizde çeşitli sebeplerden dolayı (tabloların istatistiğinin henüz alınmamış olması, optimizer ın çalıştırma planını [execution plan] değiştirmek için, vs.) çalıştırma planında [execution plan] nested loop oluşabilir. Bu durum sorgu performansının önemli ölçüde düşmesine sebep oluyorsa Oracle çalıştırma planına müdahale etmek için use_hash ipucu (use_hash hint, hash join) kullanılabilir.

Düz/Normal sorgu:

select t1.*, t2.*
from t1, t2
where t1.b = t2.b

Sorguyu paralel çalıştırmak için:

select /*+ parallel(t1,4) parallel(t2, 4) */
t1.*, t2.*
from t1, t2
where t1.b = t2.b

Sorguyu hem hash join ile hem de paralel çalıştırmak için

select /*+ use_hash(t1,t2) parallel(t1,4) parallel(t2, 4) */
t1.*, t2.*
from t1, t2
where t1.b = t2.b

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir