Veri Ambarında (Kısmen BO’da) Oracle Sql PlSql Pratik Notları

Partition lı işlem tablolarını View ya da Subquery ya da Derived Table üzerinden kullanmamak. Tablo üzerindeki partition lı kolon üzerinde doğrudan filtreleme yapmak. Partition lı kolon üzerinden inner join yapmak. Yukarıdaki kısım Oracle veri tabanı için geçerli. Teradata veri tabanında ise partition lı tablolara view, subquery, derived table üzerinden partition lı kolona filtre koymak partition ın kullanılmamasına sebep olmuyor, yani partition filtrelemesi kullanılmaya devam ediyor ve yüksek performans korunuyor.

Özetlenmiş tablolar (aggregated table) kullanmaya özen göstermek.

Çoğunlukla (kesin kural değil) index kullanmamak; çünkü veri ambarı işlemleri çoğunlukla kayıtlar üzerinde toplu (bulk) işlemler yapmak üzere sorgulanır, bir ya da birkaç kayıt üzerinde işlem yapmak için değil.

Mümkün mertebe join ifadelerinde outer join yerine inner join i tercih etmeye çalışmak, veri ambarı mimarisini buna göre kurmak.

Sorgu senaryosuna bağlı olarak gerekirse With As yapısı kullanmayı tercih etmek.

Pivot ve Unpivot özelliklerini kullanmak.

Analitik fonksiyonları kullanmak. (row_number, lead, lag)

Connect by ifadesini gerektiğinde kullanmak. (connect by prior, connect by level)

Veri validasyonu için düzenli ifadeleri kullanmak. (regular expressions, reg_exp)

PlSql işlerinde cursor tercih etmemek. (Cursor kullanmak kayıtlar üzerinde tek tek işlem yapmak anlamına gelir.)

PlSql ile toplu işlem yapma sorgularında execute immediate kullanmak. (Veri ambarında PlSql kodu ile işlem yaparken create drop ile geçici tablolar üzerinde çalışmak istenildiğinde kodun derlenebilmesi için execute immediate ile obje bağımlılıkları yok edilir. Execute immediate kullanıldığında çalıştırılacak sorgu belirsizdir ve derleme yapılırken obje (tablo, view, vs.) bağımlılıkları hesaplanmadan derleme yapılır.)

Bir cevap yazın

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