Bileşik INDEX'ler ve Sütun Sırası
Bileşik INDEX'ler için sütun sırasını seçin, sol ön ek kuralını anlayın ve birden fazla sorguyu kapsayan INDEX'ler tasarlayın.
Bileşik INDEX'ler ve Sütun Sırası, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Bileşik Dizin Nedir?
Birden fazla sütun üzerindeki dizindir. PostgreSQL B-ağaçları en fazla 32 sütunu dizinleyebilir; pratikte genellikle 2–4 sütun kullanılır.
CREATE INDEX orders_user_created_idx ON orders(user_id, created_at DESC);Bileşik Dizin Neden Kullanılır?
İki senaryo vardır:
- Sorgu aynı anda birden çok sütunu filtreler
- Sorgu bir sütunu filtreler ve başka bir sütuna göre sıralar
En Soldaki Önek Kuralı
(a, b, c) üzerindeki bir dizin şunlara hizmet edebilir:
WHERE a = ?WHERE a = ? AND b = ?WHERE a = ? AND b = ? AND c = ?
Yalnızca WHERE b = ? veya WHERE c = ? koşullarına hizmet etmez.
Sıra Önemlidir
En seçici VE en sık filtrelenen sütunu ilk sıraya koyun. Eşitlik sütunlarını aralık sütunlarından önce yerleştirin:
CREATE INDEX orders_user_total_idx ON orders(user_id, total);
-- Best for: WHERE user_id = 42 AND total > 100
-- Also OK: WHERE user_id = 42
-- Useless: WHERE total > 100 (without user_id)Eşitlik ve Aralık
Eşitlik koşulları dizini verimli kullanır; aralıklar da dizini kullanır, ancak sonraki kullanım alanını sınırlar. Eşitlik sütunları ilk sırada olmalıdır:
-- Index: (status, created_at)
WHERE status = 'paid' AND created_at >= ... -- both columns used
WHERE created_at >= ... AND status = 'paid' -- index used for status, range scan on created_atDizin Sırası = Sıralama Sırası
(user_id, created_at DESC) üzerindeki bir dizin, sıralama adımına gerek kalmadan "kullanıcının siparişlerini en yeniden eskiye" sunar:
EXPLAIN ANALYZE
SELECT * FROM orders
WHERE user_id = 42
ORDER BY created_at DESC LIMIT 10;
-- Index Scan, no Sort node neededAnahtar Olmayan Sütunları Dahil Etme (INCLUDE)
PG 11 ve sonraki sürümler, "kapsayıcı" dizinler için INCLUDE desteği sunar; ek sütunlar yapraklarda saklanır, ancak sıralama için kullanılmaz:
CREATE INDEX orders_user_idx ON orders(user_id)
INCLUDE (total, status);
-- Enables Index-Only Scan for queries that need just these columns.Bileşik Dizinler Ne Zaman Oluşturulmamalı
Sütunlar birbirinden bağımsız olarak sorgulanıyorsa iki tek sütunlu dizin daha fazla sorguya hizmet edebilir. Bileşik dizinler esnekliği, "tek sorguda her şey hazır" yaklaşımıyla değiş tokuş eder.
Bitmap Dizini Birleştirme
PostgreSQL, Bitmap Index Scan aracılığıyla birden çok tek sütunlu dizini birleştirebilir:
EXPLAIN ANALYZE
SELECT * FROM orders WHERE user_id = 42 AND status = 'paid';
-- BitmapAnd of two index scans — works without a composite, but slower than the right composite.Dizin Şişmesini İzleme
Bileşik dizinler daha geniştir. Daha geniş dizinler = daha büyük dosyalar = dizinin daha azı önbelleğe sığar. Bilinçli seçim yapınız.
Sütun Sırasını Belirleme — Uygulamalı Örnek
Sorgu: "bir kullanıcıya ait, tarih aralığındaki ve tarihe göre sıralanmış siparişler".
-- Index design:
CREATE INDEX orders_user_created_idx
ON orders(user_id, created_at DESC);
-- Query (efficiently uses the index):
SELECT * FROM orders
WHERE user_id = 42
AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY created_at DESC LIMIT 10;Özet
Bileşik dizinler çok sütunlu filtrelere hizmet eder ve sıralama adımlarını ortadan kaldırır.
- En soldaki önek kuralı
- Önce eşitlik sütunları
- Yalnızca kapsama amacıyla kullanılan sütunlar için INCLUDE
- İki tek sütunlu dizin mi, bir bileşik dizin mi — sorgu dağılımına bağlıdır
Hızlı Kontrol
(user_id, status, created_at) üzerinde bir dizininiz var. Hangi sorgu bunu verimli biçimde CANNOT kullanır?
Yapay zeka eğitmeniyle SQL öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 46
- Dersler
- 183
Sıkça Sorulan Sorular
“Bileşik INDEX'ler ve Sütun Sırası” dersi ücretsiz mi?
Evet — “Bileşik INDEX'ler ve Sütun Sırası” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Bileşik INDEX'ler ve Sütun Sırası” dersinde ne öğreneceğim?
Bileşik INDEX'ler için sütun sırasını seçin, sol ön ek kuralını anlayın ve birden fazla sorguyu kapsayan INDEX'ler tasarlayın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Bileşik INDEX'ler ve Sütun Sırası” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- B-ağacı ve Hash ve GiST ve GIN INDEX'leri
- Bileşik INDEX'ler ve Sütun Sırası
- Kısmi ve İfade INDEX'leri
- INDEX Bakımı ve Şişkinlik