cte ne demek?

İşte CTE (Common Table Expression) hakkında bilgi:

CTE (Common Table Expression) - Ortak Tablo İfadesi

CTE, bir sorgu içerisinde geçici bir sonuç kümesi tanımlamak için kullanılan bir yapıdır. Temelde, karmaşık sorguları daha okunabilir ve yönetilebilir hale getirmek için kullanılır. CTE'ler, WITH anahtar kelimesi ile başlar ve yalnızca tanımlandığı sorgu içerisinde geçerlidir. Kalıcı bir tablo oluşturmazlar.

Temel Özellikleri:

  • Geçici Tablo: Sadece tanımlandığı sorgu içinde kullanılabilir.
  • Okunabilirlik: Karmaşık sorguları parçalara ayırarak okunabilirliği artırır.
  • Yeniden Kullanılabilirlik: Aynı sonuç kümesini sorgu içinde birden fazla yerde kullanma imkanı sağlar.
  • Özyineleme (Recursive): Bazı veritabanı sistemlerinde özyinelemeli CTE'ler oluşturulabilir, bu da hiyerarşik verileri sorgulamak için kullanışlıdır. (Özyinelemeli CTE)

Kullanım Alanları:

  • Karmaşık Sorguları Basitleştirme: Büyük ve karmaşık sorguları daha küçük, daha yönetilebilir parçalara bölmek.
  • Hiyerarşik Veri Sorgulama: Organizasyon yapıları, kategori ağaçları gibi hiyerarşik verileri sorgulamak.
  • Yeniden Kullanılabilir Sonuç Kümesi: Aynı alt sorguyu birden fazla yerde kullanmak yerine, CTE ile tanımlayıp tekrar tekrar kullanmak.
  • Performans İyileştirmesi: Bazı durumlarda, CTE'ler sorgu planlayıcısına yardımcı olarak performansı artırabilir.

Sözdizimi:

WITH CTE_Adı AS (
    SELECT ...
    FROM ...
    WHERE ...
)
SELECT ...
FROM CTE_Adı
WHERE ...;

Örnek:

Aşağıdaki örnek, müşterilerin sipariş sayısını bulan ve bu sayıyı kullanarak bir sonuç kümesi oluşturan basit bir CTE örneğidir:

WITH MüşteriSiparişSayısı AS (
    SELECT MüşteriID, COUNT(*) AS SiparişSayısı
    FROM Siparişler
    GROUP BY MüşteriID
)
SELECT Müşteriler.Ad, MüşteriSiparişSayısı.SiparişSayısı
FROM Müşteriler
INNER JOIN MüşteriSiparişSayısı ON Müşteriler.MüşteriID = MüşteriSiparişSayısı.MüşteriID
WHERE MüşteriSiparişSayısı.SiparişSayısı > 5;

Bu sorguda, MüşteriSiparişSayısı CTE'si, her müşterinin sipariş sayısını hesaplar ve ana sorgu bu bilgiyi kullanarak belirli bir eşiğin üzerinde sipariş veren müşterileri listeler.

Not: CTE'lerin performansı veritabanı sistemine ve sorgunun karmaşıklığına bağlı olarak değişebilir. Bazı durumlarda, CTE'ler performansı artırırken, bazılarında ise düşürebilir. Bu nedenle, CTE kullanırken sorgu performansını izlemek önemlidir.