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