📄
Text
·
25 min
Temporary Tablolar
Giriş — Oturum Bazlı Geçici Depolama
Temporary tablolar (geçici tablolar), sadece mevcut veritabanı oturumu süresince yaşar. Oturum kapandığında otomatik silinir. Karmaşık sorguların ara sonuçlarını tutmak, performans iyileştirme ve veri dönüşümü için idealdir.
Oluşturma ve Kullanım
-- Geçici tablo oluştur
CREATE TEMPORARY TABLE temp_bestsellers (
product_id INT UNSIGNED,
product_name VARCHAR(200),
total_sold INT UNSIGNED,
revenue DECIMAL(12,2)
);
-- Veri ekle
INSERT INTO temp_bestsellers
SELECT p.product_id, p.product_name, SUM(oi.quantity), SUM(oi.quantity * oi.unit_price)
FROM products p
INNER JOIN order_items oi ON p.product_id = oi.product_id
GROUP BY p.product_id, p.product_name;
-- Geçici tabloyu sorgula
SELECT * FROM temp_bestsellers ORDER BY total_sold DESC LIMIT 10;
-- Başka sorgularda kullan
SELECT c.category_name, SUM(tb.revenue) AS category_revenue
FROM temp_bestsellers tb
INNER JOIN products p ON tb.product_id = p.product_id
INNER JOIN categories c ON p.category_id = c.category_id
GROUP BY c.category_name;Temporary Table Özellikleri
| Özellik | Açıklama |
|---|---|
| Görünürlük | Sadece oluşturan oturum görür |
| Ömür | Oturum kapandığında otomatik silinir |
| İsimlendirme | Aynı isimde kalıcı tablo olsa bile geçici tablo önceliklidir |
| Index | Index eklenebilir (performans için önerilir) |
| Storage | Bellekte (MEMORY) veya diskte (InnoDB) saklanabilir |
Ne Zaman Kullanılır?
-- 1. Karmaşık sorguyu adımlara bölme
CREATE TEMPORARY TABLE temp_active_customers AS
SELECT customer_id, SUM(total_amount) AS total
FROM orders WHERE status != 'cancelled'
GROUP BY customer_id HAVING total > 1000;
-- 2. Bu geçici tabloyu birden fazla sorguda kullan
SELECT * FROM temp_active_customers WHERE total > 50000;
SELECT AVG(total) FROM temp_active_customers;
-- 3. Temizle (opsiyonel — oturum kapanınca otomatik silinir)
DROP TEMPORARY TABLE IF EXISTS temp_active_customers;Geçici Tablo vs Derived Table vs CTE
| Özellik | Temporary Table | Derived Table | CTE |
|---|---|---|---|
| Ömür | Oturum boyunca | Tek sorgu | Tek sorgu |
| Birden fazla kullanım | ✅ | ❌ | ✅ (aynı sorguda) |
| Index | ✅ | ❌ | ❌ |
| Explicit oluşturma | ✅ | ❌ | ❌ |
💡 İpucu: Ara sonucu tek sorguda kullanacaksan → derived table veya CTE. Birden fazla sorguda kullanacaksan veya index gerekiyorsa → temporary table.
Özet
TEMPORARY TABLE oturum bazlı geçici tablodur, oturum kapanınca silinir
Karmaşık sorguları adımlara bölmek ve ara sonuçları tutmak için ideal
Diğer oturumlar geçici tabloyu göremez
Index eklenebilir — büyük veri setlerinde performans artışı sağlar
Derived table ve CTE'den farkı: oturum boyunca yaşar ve birden fazla sorguda kullanılabilir
AI Asistan
Sorularını yanıtlamaya hazır