Yaygın Sorgular için İndeksler
En sık çalıştıracağınız sorgular için indeks ekleyin: kullanıcıya, tarihe ve dış anahtara göre; ardından etkiyi EXPLAIN ile ölçün.
Yaygın Sorgular için İndeksler, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. 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.
Dizin Nedir?
Dizin, veritabanının tabloyu taramadan sütun değerine göre satırları bulmasını sağlayan, disk üzerindeki ayrı bir veri yapısıdır. Klasik uygulaması B-ağacıdır.
Dizinler Yazma İşlemlerini Okuma Karşılığında Feda Eder
Her dizin INSERT/UPDATE/DELETE işlemlerini biraz yavaşlatır (dizin de güncellenmelidir). İhtiyacınız olmayan dizinleri eklemeyin.
Birincil Anahtarlar Ücretsiz Dizin Alır
PRIMARY KEY bildirmek otomatik olarak benzersiz bir B-ağacı dizini oluşturur. UNIQUE sütunları için de aynı durum geçerlidir.
Yabancı Anahtar Sütunlarını Dizinleyin
PostgreSQL, FK'nin alt tarafını otomatik olarak dizinlemez. Her zaman bir tane ekleyin — aksi hâlde bir üst kaydı silmek tüm alt kayıtları tarar:
CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);WHERE İçinde Kullanılan Sütunları Dizinleyin
created_at ile sık sık filtreleme yapıyorsanız bu sütunu dizinleyin:
CREATE INDEX posts_created_at_idx ON posts(created_at DESC);
-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;Bileşik Dizinler
Birden çok sütunla filtreleme yaparken bileşik bir dizin, iki tek sütunlu dizinden çok daha hızlı olabilir:
CREATE INDEX posts_author_published_idx
ON posts(author_id, published_at DESC);
-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;Sol Önek Kuralı
(a, b, c) bileşik dizini WHERE a = ? ve WHERE a = ? AND b = ? sorgularına hizmet edebilir — ancak tek başına WHERE b = ? sorgusuna hizmet EDEMEZ. Sıralama önemlidir.
Kısmi Dizinler
Yalnızca sorguladığınız satırları dizinleyin:
-- Only published posts:
CREATE INDEX posts_published_idx
ON posts(published_at DESC)
WHERE published_at IS NOT NULL;
-- Smaller index, faster lookups for the common case.İfade Dizinleri
Bir sütun üzerindeki işlevi dizinleyin:
CREATE INDEX users_email_lower_idx ON users(LOWER(email));
-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);Gereğinden Fazla Dizin Oluşturmayın
Genel kurallar:
- PK için dizin ✓ (otomatik)
- UNIQUE sütunları için dizin ✓ (otomatik)
- FK sütunları için dizin ✓
- Sık kullanılan sorgularınızın WHERE / JOIN / ORDER BY bölümlerinde kullanılan sütunlar için dizin
- Seçiciliği çok düşük sütunları dizinlemeyin (ör. 50/50 dağılıma sahip bir boolean)
EXPLAIN ile Ölçün
Dizin eklemeden önce ve ekledikten sonra, sorgu planlayıcısının onu kullandığını doğrulamak için EXPLAIN ANALYZE çalıştırın:
EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;Özet
Blogumuz için yabancı anahtarları dizinleyin (yorumlar üzerindeki post_id, gönderiler ve yorumlar üzerindeki author_id) ve "kullanıcıya göre en yeni gönderiler" sorguları için gönderiler üzerinde (author_id, published_at DESC) dizinini oluşturun.
Hızlı Kontrol
orders.user_id REFERENCES users(id) yabancı anahtarını eklediniz. Hangi dizini, varsa, oluşturmalısınız?
Sıkça Sorulan Sorular
“Yaygın Sorgular için İndeksler” dersi ücretsiz mi?
Evet — “Yaygın Sorgular için İndeksler” 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.
“Yaygın Sorgular için İndeksler” dersinde ne öğreneceğim?
En sık çalıştıracağınız sorgular için indeks ekleyin: kullanıcıya, tarihe ve dış anahtara göre; ardından etkiyi EXPLAIN ile ölçü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 3. dersidir.
“Yaygın Sorgular için İndeksler” 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
- Bir Blogu Modelleme: Kullanıcılar, Gönderiler, Yorumlar
- Anahtarları ve Türleri Seçme
- Yaygın Sorgular için İndeksler
- Test Verileriyle Veritabanını Doldurma