← Kursa Dön
📄 Text · 30 min

CREATE INDEX, UNIQUE INDEX, Composite Index

Index Oluşturma

-- Tekli index
CREATE INDEX idx_city ON customers(city);
CREATE INDEX idx_order_date ON orders(order_date);
CREATE INDEX idx_category ON products(category_id);

-- UNIQUE index (benzersizlik + performans)
CREATE UNIQUE INDEX idx_email ON customers(email);

-- Composite (birleşik) index
CREATE INDEX idx_status_date ON orders(status, order_date);
CREATE INDEX idx_cat_price ON products(category_id, price);

-- ALTER TABLE ile
ALTER TABLE products ADD INDEX idx_name (product_name);
ALTER TABLE customers ADD UNIQUE INDEX idx_phone (phone);

Composite Index — Sütun Sırası Önemli!

Composite index soldan sağa çalışır (leftmost prefix rule):

CREATE INDEX idx_abc ON table(a, b, c);

-- ✅ Index kullanılır:
WHERE a = 1                          -- Sadece a
WHERE a = 1 AND b = 2               -- a + b
WHERE a = 1 AND b = 2 AND c = 3     -- a + b + c (tam kullanım)
WHERE a = 1 AND c = 3               -- Sadece a kısmı kullanılır

-- ❌ Index KULLANILMAZ:
WHERE b = 2                          -- a olmadan b kullanılamaz
WHERE c = 3                          -- a olmadan c kullanılamaz
WHERE b = 2 AND c = 3               -- a olmadan başlanamaz

💡 İpucu: Composite index sırasını belirlerken: 1) Eşitlik koşulları (=) önce, 2) Aralık koşulları (>, <) sonra. Sık kullanılan WHERE koşullarını analiz et.


Index Silme

DROP INDEX idx_city ON customers;
ALTER TABLE customers DROP INDEX idx_phone;

Index Türleri Özet

TürSyntaxKullanım
NormalCREATE INDEXWHERE, JOIN koşullarında
UNIQUECREATE UNIQUE INDEXBenzersizlik + performans
CompositeCREATE INDEX idx ON t(a, b)Çoklu sütun filtreleme
PrefixCREATE INDEX idx ON t(name(10))Uzun string'lerin ilk N karakteri
FulltextCREATE FULLTEXT INDEXMetin arama (B12'de)

Ne Zaman Index Oluşturmalı?

  • WHERE'de sık kullanılan sütunlar

  • JOIN koşulundaki FK sütunları

  • ORDER BY sütunları

  • GROUP BY sütunları

  • UNIQUE olması gereken sütunlar

Ne Zaman Oluşturmamalı?

  • Çok az satırlı tablolarda (index overhead > fayda)

  • Çok sık yazılan, nadiren okunan tablolarda

  • Düşük kardinalite (cinsiyet gibi sadece M/F — index işe yaramaz)


Özet

  • CREATE INDEX sorgu performansını artırır

  • Composite index soldan sağa prefix kuralına uyar

  • Eşitlik sütunları önce, aralık sütunları sonra

  • UNIQUE index hem benzersizlik hem performans sağlar

  • Fazla index yazma performansını düşürür — dengeli ol