Merhabalar,
iş seyahatlerimden dolayı sizlere makale yazmak biraz ertelemek zorunda kaldığım için affınıza sığınıyorum….
sonrasında devam….
Postgresql ve CTE kullanımı
CTE(Common table expression) kullanırken biraz daha mı dikkatli olsak nedenide şu; eğeryanlış kullanırsak performansımızı ciddi miktarda sıkıntıya sokacak işler olduğunu bilmemizdir.
Bunların en başında ufak sql cümleciklerinde kullandığımız with cümlesidir. Eğer ufak okunması kolay olan sorgularda kullandığımız zaman çok güzel sonuçlar ile karşılaşmaktayız.
Öncesinde; örnek bir tablo oluşturduğumuzu ve içerisine 10milon kayıt attığımızı düşünelim.
Eğer ki bu tabloya
–select * from transaction where id=1000 gibi bir sorgu üretirsek ortama 1ms nin altında kayıt dönderecektir.
Not:Siz siz olun * lı sorgu çalıştırmayın. Öğrencilik ve yazılım sektöründeki ilk zamanlarımda yaptığım hatalardan bahsediyorum size… 😊
eğer aynı kodu with ve cte ile çağıracak olursanız kayıt satısına bağlı ortalama 200-300kat daha yavaş gelecektir.
–with cte as (Select * from transaction) select * from cte where id=1000 şeklindeki kayıt ile…. Dikkat edecek olursak cte üzerinden sorgulama yapmaktayız. Bu şekilde kısa cümlelerde performans daha düşüktür.
CTE kullanıldığı zaman teknik manade hafızada oluşan bir tablo oluşturduğu ve sorgulama yaptığı zaman zaman ve bekleme maliyetleri karşımıza çıkmaktadır.
Eğer aynı CTE üzerinden 2.ci bir kod çalıştırdığımız zaman performansı ciddi miktarda hızlanmış ve maaliyeti düşük bir sorgulama yaptığımızın farkında olacağız. Bununla alakalı yapılan analizlerde normal sorgulara nazaran 10 kat daha hızlı olduğunu görebiliyor olacağız.