Temp Table(Geçici Tablo) Ve Table Variable(Değişken Tablo) Arasındaki Farklılıklar

on 14 Aralık 2017 Perşembe
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