TEMP TABLE(Geçici Tablo)
VS TABLE VARİABLE(Değişken Tablo)
Çalışma esnasında,
SP(Store Procedure) yazarken vs konularda elde ettiğimiz kayıtları geçici bir
yerde tutmak isteriz, hem kullanabilmek hemde işleyebilmek için. Burada
kullanabileceğimiz iki farklı yapı var. Bunlar Temp Table ve Table Variable.
Aslında ikisinide genelde biliriz ama hangisini ne zaman kullanmalıyız,
hangisinden hangi durumlarda daha çok verim alırız ondan bahsedeceğim.
Temp Table ve Table
Variable arasında Yazım/Kullanım(Syntax), Index, Erişim, Transaction
konularında farklılıklar mevcut.
Yazım ve Kullanım
Farklılıkları
- Temp Table Local(Yerel) ve Global(Genel) olmak üzere 2
farklı şekilde oluşturulabilir. Arasındaki tek fark local temp table yaşam
süresi oluşturulduğu oturum süresincedir. Genel temp tabloya ise diğer
oturumlardan da ulaşılabilir.
- Geçici tablolar ile normal tablolarda yaptığımız DDL,
DML işlemi yapılabilir(clustered,non- clustured index
oluşturma,transaction yönetimi).
- Sadece Foreign Key constrait oluşturulamaz.
- Temp Table ile UDF(Kullanıcı Tanımlı Fonksiyon)
kullanımı desteklememektedir.
--Local Temp Table
SELECT * INTO #t1 FROM Firma
--Global Temp Table
SELECT * INTO ##t1 FROM Firma
- Table Variable bir değişken tablo türü olduğudnan
DDL(Create,Drop vs.) işlemleri geçerli değildir.
- Kolon ekleme için ALTER komutu kullanılamaz.
- Table Variable ile UDF(Kullancı Tanımlı
Fonksiyonlar) kullanılabilir.
--Tablo olustur
DECLARE @Firma TABLE
(
Ad VARCHAR(50),
Sektor VARCHAR(50)
)
--Kayıt Girelim
INSERT @Firma
VALUES('AGCA','GIDA')
INSERT @Firma
VALUES('SAFA','Otomotiv')
--Tabloyu Okuyalım
SELECT * FROM @Firma
Tutuldukları Yer
Farklılıkları
- Temp Table tanımlanan tablolar TempDB üzerinde
tutulurlar. Log larıda gine aynı yerde tutulur. Bundan dolayıda
transaction yapısınıda desteklerler.
- Table Variable transaction yapısını desteklemezler.
Değişken gibi değerlendirilirler. Diske yazılmaz ve bellekte tutulurlar.
Index ve Erişim
- Temp Table ile index oluşturabiliriz.
- Temp Table ile global veya local şekilde tanımlama yaparak diğer oturumlardan da erişim sağlayabiliriz.
- Table Variable ile index oluşturulamaz.
- Temp Variable ile diğer oturumlardan erişim yapılamaz.
SONUÇ
Şimdi en heyecan verici
kısma geldik bunları biliyoruz ama ne zaman hangisini kullanamamız gerekiyor.
Ben bunları sular seller gibi bilsem bile bana ne kazandırdığını bilmessem bir
anlamı yok. Yanlış anlaşımasın bir anlamı yok demiyorum ne kazandırdığını
bilmessem bir anlamı yok diyorum J
Diğer oturumlardan
erişilecekse Temp Table kullanmamız gerek.
Eğer kayıt sayımız 100
üzerinde olacaksa Temp Table, 100 ün altında olacaksa Table Variable
kullanılır.
0 yorum:
Yorum Gönder