SQL Server’da Temp Tabloların Kullanımı
Herkese merhaba.Bu yazıda sizlere Temp tabloların kullanımından bahsedeceğim.
SQL Server’da bazı durumlarda Temp tabloları kullanmak isteyebilirsiniz.
SQL Server’da Temp tablo (veya geçici tablo), tempdb veritabanında oluşturulan ve yalnızca bir oturum veya işlem süresince var olan bir tablodur. Temp tablolar, kalıcı olarak normal bir tabloda saklayamayacağınız geçici verileri depolamanız gereken durumlarda kullanışlıdır.
Temp tablolar, schema ve sütunlara sahip olmaları açısından normal tablolara benzer, ancak yalnızca bir oturum veya işlem süresince var olurlar. Anında oluşturulup bırakılabilirler, bu da onları geçici verileri depolamak için uygun bir yol haline getirir.
SQL Server’da Neden Temp Tablolarını Kullanmalıyız?
SQL Server’da temp tabloları kullanmak isteyebileceğiniz birkaç neden vardır.
- Ara sonuçların saklanması: Karmaşık sorgular veya veri dönüşümleri ile çalışırken, sonraki adımlarda kullanmak için ara sonuçları saklamanız gerekebilir. Bu ara sonuçları depolamak için geçici tablolar kullanılabilir.
- Karmaşık sorguları parçalara ayırma: Okunması veya anlaşılması zor olan karmaşık bir sorgunuz varsa, onu geçici tabloları kullanarak daha küçük, daha yönetilebilir parçalara ayırabilirsiniz.
- Güvenlik: Bazen hassas verileri geçici olarak depolamanız gerekebilir ve bunları kalıcı olarak normal bir tabloda depolamak istemezsiniz. Geçici tablolar, bu hassas verileri bir oturum veya işlem süresince depolamak için kullanılabilir.
Kaç Çeşit Temp Tablo Var?
- Yerel geçici tablolar (local temporary tables)
- Global geçici tablolar (global temporary tables)
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.
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 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.
Temp Tablolar Nasıl Oluşturulur?
SQL Server’da temp tablo oluşturmak için, tablo adından önce # simgesi bulunan CREATE TABLE ifadesini kullanırsınız. Örneğin:
CREATE TABLE #TempTable
(
ID INT ,
Ad VARCHAR (50)
)
Bu, iki sütunlu TempTable adlı bir geçici tablo oluşturur: ID ve Ad. Tablo tempdb veritabanında oluşturulur.
Temp Tablolara Veri Nasıl Eklenir?
Bir temp tablo oluşturduktan sonra, INSERT INTO deyimini kullanarak bu tabloya veri ekleyebilirsiniz. Örneğin:
INSERT INTO #TempTable
VALUES (1 , 'Yavuz'), (2 , 'Pelin'), (3 , 'Selim')
Yukarıdaki kod, TempTable temp tablosuna üç satır ekler.
Temp Tablolarda Veri Listeleme Nasıl Yapılır?
Bir temp tabloda veri listelemek için SELECT deyimini kullanırsınız. Örneğin:
SELECT * FROM #TempTable
Temp Tablolarda Veri Nasıl Güncellenir?
Bir temp tablodaki verileri güncellemek için UPDATE deyimini kullanırsınız. Örneğin:
UPDATE #TempTable SET Ad = 'Hasan' WHERE ID = 3
Bu, kimliği 3 olan satırın Ad sütununu ‘Hasan’ olarak günceller.
Temp Tablolarda Veri Nasıl Silinir?
Bir temp tablodan veri silmek için DELETE deyimini kullanırsınız. Örneğin:
DELETE FROM #TempTable WHERE ID = 2
Bu, TempTable temp tablosundan ID değeri 2 olan satırı siler.
Temp Tabloları Drop Etmek
Bir temp tabloyu drop etmek için, tablo adından önce # simgesi bulunan DROP TABLE deyimini kullanırsınız. Örneğin:
DROP TABLE #TempTable
Temp Tabloları Kontrollü Drop Etmek
SQL Server 2016 ve üzeri için aşağıdaki kodu kullanarak kontrollü şekilde temp tablolarınızı drop edebilirsiniz.
IF OBJECT_ID('tempdb..#LocalTempTablo') IS NOT NULL
DROP TABLE #LocalTempTablo
IF OBJECT_ID('tempdb..##GlobalTempTablo') IS NOT NULL
DROP TABLE ##GlobalTempTablo
SQL Server 2014 ve aşağısı için aşağıdaki kodu kullanarak kontrollü şekilde temp tablolarınızı drop edebilirsiniz.
IF EXISTS(SELECT [name] FROM tempdb.sys.tables WHERE [name] like '#LocalTempTablo%')
BEGIN
DROP TABLE #LocalTempTablo;
END;
IF EXISTS(SELECT [name] FROM tempdb.sys.tables WHERE [name] like '##GlobalTempTablo%')
BEGIN
DROP TABLE ##GlobalTempTablo;
END;
Temp tabloları, geçici verileri depolamak için SQL Server’da kullanışlı bir araçtır. Ara sonuçları depolamak, karmaşık sorguları çözümlemek ve hassas verileri geçici olarak depolamak için kullanılabilirler.
Temp Tabloları Kullanmanın Yararları
- Geçici verileri depolamak için kullanılabilir.
- Ara sonuçları saklamak için kullanılabilir.
- Karmaşık sorguları daha küçük parçalara ayırmaya yardımcı olabilir.
- Hassas verileri geçici olarak depolamak için kullanılabilir.
Kısacası
- Temp tabloları yalnızca gerektiğinde kullanın.
- Temp tablo ile işiniz bitince temp tabloları DROP edin.
- Performansı artırmak için Temp tablolarda Index kullanın
- Bellek kullanımını azaltmak için geçici tablolarda az sayıda sütun kullanın.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.