COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
26/ 65

İleri sorgu teknikleri

CTE ile sorguyu katmanlara ayır

Okunabilir isimler, tek statement kapsamı.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Common Table Expression, WITH ile adlandırılan bir sorgu ifadesidir. Kendinden sonraki tek statement içinde kullanılır; kalıcı tablo veya otomatik önbellek değildir. Birden çok CTE aynı WITH bölümünde virgülle tanımlanabilir. Önceki statement’ı noktalı virgülle bitirmek WITH ayrıştırmasını açık tutar.

CTE, önce sipariş toplamını üretip sonra müşteri metriğini hesaplamak gibi aşamaları okunabilir kılar. Aynı CTE’ye çok kez referans vermek sonucunun bir kere hesaplanacağını garanti etmez. Yeniden kullanım veya indeks ihtiyacında geçici tabloyu gerçek planla karşılaştır.

NERESİNDE KULLANIRSIN?

Uzun sorguları anlamlı veri dönüşüm adımlarına bölmek için.

SIK YAPILAN HATA

CTE’yi kalıcı tablo, materialize edilmiş sonuç veya otomatik performans iyileştirmesi sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
WITH InStock AS (SELECT ProductId, ProductName FROM lab.Product WHERE Stock > 0) SELECT * FROM InStock;

Tek statement içinde stoklu ürünlere isim verir.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

Kategori başına ürün sayısını CTE’de üret, sonra iki ve üzeri olanları filtrele.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
WITH Counts AS (SELECT Category, COUNT(*) AS Products FROM lab.Product GROUP BY Category) SELECT * FROM Counts WHERE Products >= 2;

Electronics altı değil beş ürün içerir; toplam ürün sayısı yedidir.