SQL Server’da geçici tablolar

SQL Server’da geçici tablolar

Bu yazıda SQL Server'da geçici (temporary) tablolara kısa bir giriş yapıyorum.
Ayşe Yaman13 Haz 2022

Geçici tablolar, ara sonuçları depolamaya ve işlemeye olanak tanıyan kullanışlı bir özelliktir. Bu tablolarda SELECT sorguları aracılığıyla veriler sorgulanabilir ve UPDATE, INSERT ve DELETE (DML) komutları ile de verilerde değişiklik yapılabilir. Bu açıdan aynı kalıcı tablolar gibi davranırlar.

Geçici tablolar, birden çok kez erişilmesi gereken sonuç kümelerini depolamak için performanslı bir yöntemdir. Bazen bir sorgu sonucunda dönen kayıtları başka bir sorguda JOIN işlemine tabi tutarız. Aynı zamanda gerekli tablolara kritik sorgular yazarken, gerçek tablolar üzerinde işlemler yapmak yerine geçici tablolar üzerinde testler yapar ve ardından gerçek tablolara uygularız. Özellikle büyük veriler ile çalışırken geçici tablolarla alt kümeler oluşturmak sorgu sonuçlarının daha hızlı alınmasına olanak sağlar.

Yerel geçici tablolar (local temporary tables) ve global geçici tablolar (global temporary tables) olmak üzere ikiye ayrılan geçici tablolar SQL Server’da tempdb isimli veri tabanının altında saklanırlar.

Geçici tabloların saklandığı uzantı (Databases>System Databases>tempdb)

 

Yerel geçici tablolar (local temporary tables)

Bir yerel geçici tablonun adı “#” ile başlar ve tablo adının sonuna rastgele bir sayı eklenir. Yalnızca geçerli oturumda görünürler ve  tabloyu oluşturan kullanıcının SQL Server ile olan bağlantısını kapatması halinde otomatik olarak silinirler.

Yerel geçici tablolar

 

Global geçici tablolar (global temporary tables)

Global geçici tablolar '##' ile başlar, adı her zaman benzersizdir ve isme rastgele bir sayı eklenmez. Global geçici tablo, yerel geçici tablodan farklı olarak son etkin bağlantı kapatıldığı anda yok edilir. 

Global geçici tablolar 

Geçici tabloyu oluşturan kullanıcı ile birlikte o anda SQL Server’a birden fazla kişi bağlı bulunabilir. Bu durumda tabloyu oluşturan kullanıcı SQL Server ile olan bağlantısını kapattıktan sonra da serverın tüm bağlantıları tarafından görülebilir ve bağlı bulunan başka bir kullanıcı kalmayana kadar geçici tablo saklanır, son etkin bağlantı sonlandırıldığında anda da tablo silinir. Diğer bağlantıların da erişebileceği geçici bir tablo oluşturulmak istendiğinde ise global geçici tablolar kullanılabilir.

 

Geçici tablolar nasıl oluşturulur?

Veri tabanı üzerinde geçici bir süre için ek tablolara ihtiyaç duyulduğunda T-SQL ile geçici tablolar oluşturulup kullanılabilir.

SQL Server’da SELECT … INTO ve CREATE TABLE ifadeleri aracılığıyla geçici tablolar oluşturulabilir. 

 

Yerel geçici tablolar

CREATE TABLE (tablo oluşturmak için kullanılır)

CREATE TABLE #LocalTempTable
(
ProductCode int,
Category varchar(250),
SubCategory varchar(250)
)

INSERT INTO (tabloya kayıt eklemek için kullanılır)

INSERT INTO #LocalTempTable
VALUES (1001, 'Accessories', 'Jewellery')

SELECT … INTO (tablo oluşturmak için kullanılır)

SELECT ProductCode, Category, SubCategory
INTO #LocalTempTable
FROM dbo.DimProduct

 

Global geçici tablolar

CREATE TABLE (tablo oluşturmak için kullanılır)

CREATE TABLE ##GlobalTempTable
(
ProductCode int,
Category varchar(250),
SubCategory varchar(250)
)

INSERT INTO (tabloya kayıt eklemek için kullanılır)

INSERT INTO ##GlobalTempTable
VALUES (1001, 'Accessories', 'Jewellery')

SELECT … INTO (tablo oluşturmak için kullanılır)

SELECT ProductCode, Category, SubCategory
INTO ##GlobalTempTable
FROM dbo.DimProduct

 

Not : Geçici tabloları veri tabanı hafızasından silmek istediğimizde DROP komutunu kullanarak işlemi gerçekleştirebiliriz.

DROP TABLE #LocalTempTable 
DROP TABLE ##GlobalTempTable

SQL hakkında daha geniş kapsamlı bilgiye erişmek ve kariyerinizde SQL bilginizle fark yaratmak isterseniz Miuul'un sunduğu MS SQL Developer eğitimine göz atabilirsiniz.


Kaynaklar

Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.