COMPUTER ENGINEER

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

Veritabanı programlama

Geçici tablolar ve tempdb

Ara sonuçların maliyetini görünür kıl.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Yerel #tablo aynı oturuma aittir; oturum bittiğinde temizlenir. Global ##tablo farklı oturumlara görünür ve bu derslerde kullanılmaz. @table değişkeni de tempdb kaynaklarını kullanabilir; “tamamen bellekte” varsayımı doğru değildir. SQL Server sürümü ve compatibility level, table variable tahminlerini etkiler.

CTE bir sonuç saklama garantisi vermez. Büyük ara sonucu tekrar kullanmak gerekiyorsa geçici tablo ve uygun indeks ölçülerek seçilebilir. tempdb; sıralama, hash spill ve row versioning yüklerini de taşır. Yavaşlığın kaynağı disk, latch, bellek veya sorgu planı olabilir. Geçici tabloları anlamlı adlandır; aynı oturumda örneği yeniden çalıştırmadan yalnız ilgili geçici tabloyu temizle.

NERESİNDE KULLANIRSIN?

Tekrar kullanılan ara veriyi hazırlamak için.

SIK YAPILAN HATA

Table variable’ın her boyutta daha hızlı olduğunu sanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
DROP TABLE IF EXISTS #Paid;
SELECT OrderId, CustomerId INTO #Paid FROM lab.SalesOrder WHERE Status = 'Paid';
SELECT COUNT(*) AS Orders FROM #Paid;

Aynı oturumda dokuz sipariş saklanır.

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.

Ürün stoklarını geçici tabloya kopyalayıp toplam stoğu hesapla.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
DROP TABLE IF EXISTS #Stock;
SELECT ProductId, Stock INTO #Stock FROM lab.Product;
SELECT SUM(Stock) AS TotalStock FROM #Stock;

Yalnız #Stock yeniden oluşturulur; kalıcı ürün tablosu değişmez.