Yalnızca INDEX Taramaları ve Görünürlük Haritası
Sorguları kapsayarak ve görünürlük haritasını güncel tutarak yalnızca INDEX taramalarını etkinleştirin.
Yalnızca INDEX Taramaları ve Görünürlük Haritası, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. 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.
Yalnızca Dizin Taraması Nedir?
Normalde bir dizin araması satır kimliklerini (TID'ler) döndürür ve gerçek satırı okumak için tabloya gidilmesi gerekir. Yalnızca Dizin Taraması, sorguyu yalnızca dizini kullanarak yanıtlar — yığına başvurmaz. Büyük ölçüde daha hızlıdır.
Koşullar
Yalnızca Dizin Taraması şunları gerektirir:
- SELECT edilen tüm sütunlar dizinde bulunmalıdır
- Satırın bulunduğu sayfa, görünürlük haritasında "tümü görünür" olarak işaretlenmelidir
Görünürlük Haritası
Her tablo sayfası için bir bit eşlemi: ayarlanmış bir bit, "bu sayfadaki tüm satırlar tüm işlemler tarafından görülebilir" anlamına gelir. VACUUM bunu korur. Bu olmadığında PostgreSQL, görünürlüğü denetlemek için yığına gitmelidir.
Sorguyu Yalnızca Dizin Kullanacak Hale Getirme
Gerekli tüm sütunları kapsayın:
-- Query:
SELECT id, email FROM users WHERE id = 42;
-- Without an index on (id, email), only an Index Scan that visits the heap is possible.
-- With this:
CREATE INDEX users_id_email_idx ON users (id, email);
-- Or better:
CREATE INDEX users_id_email_idx ON users (id) INCLUDE (email);
-- The query can be index-only.INCLUDE
Anahtar olmayan sütunlara sahip kapsayıcı dizin (PG 11+). Sütun yapraklarda depolanır ancak sıralama için kullanılmaz — ekleme maliyetini etkilemez:
CREATE INDEX users_id_idx ON users(id) INCLUDE (email, full_name);
SELECT id, email, full_name FROM users WHERE id = 42;
-- Index-only scan if visibility map allows.Neden Hâlâ Yığına Başvurabilir
Ağır yazma işlemlerinden sonra görünürlük haritası güncelliğini yitirmiş olabilir. Görünürlük haritasını yenilemek için VACUUM'u (FULL olmadan) çalıştırın.
VACUUM (VERBOSE) users;
-- "scanned X pages, X of which are visible"
-- More visible pages = more Index-Only Scans possible.Yalnızca Dizin Taramalarını Doğrulama
EXPLAIN bunu gösterir:
EXPLAIN ANALYZE
SELECT id, email FROM users WHERE id = 42;
-- Index Only Scan using users_id_email_idx on users
-- Index Cond: (id = 42)
-- Heap Fetches: 0 ← key numberYığın Getirmeleri Size Ne Söyler
"Yığın Getirmeleri: 0" — mükemmel, tüm veriler dizinden alınır. "Yığın Getirmeleri: N" — N satır için yığına başvurulması gerekmiştir (görünürlük haritası biti ayarlanmamıştır). Otomatik VACUUM çalıştıktan sonra Yığın Getirmeleri genellikle azalır.
INCLUDE mü Bileşik Dizin mi Ne Zaman Kullanılmalı
- Yalnızca SELECT ettiğiniz sütunlar için INCLUDE kullanın (sütunu filtrelemek veya sıralamak için kullanmıyorsanız)
- Sütuna göre filtreleme veya sıralama da yapıyorsanız bileşik dizin (anahtar) kullanın
INCLUDE, dizini daha dar tutar ve yazma işlemlerini hızlandırır.
Dizin Şişmesi Yalnızca Dizin Taramasına Zarar Verir
Şişmiş dizinlerde daha fazla sayfa bulunur; bu nedenle yalnızca dizin taramaları bile daha fazla veri okur. Dizinleri VACUUM'lu tutun ve şişme arttığında yeniden dizin oluşturun.
Her Şeyi Kapsamayın
Bir dizine çok fazla sütun eklemek yazma işlemlerini yavaşlatır ve dizini büyütür. Yalnızca yoğun kullanılan okuma yollarını kapsayın.
Kapsama Olarak Gerçekleştirilmiş Görünümler
Belirli bir rapor için olağanüstü okuma hızı istiyorsanız, gerçekleştirilmiş görünüm + dizin, temelde istediğiniz hesaplanmış sütunlara sahip bir "kapsayıcı dizin"dir.
Özet
Yalnızca Dizin Taraması = en hızlı okuma yolu.
- Seçilen tüm sütunlar dizinde bulunmalıdır
- INCLUDE, anahtar olmayan sütunları düşük maliyetle ekler
- Görünürlük haritası "tümü görünür" demelidir — VACUUM onu güncel tutar
- EXPLAIN: Yığın Getirmeleri: 0 hedeflenir
Kısa Kontrol
Bir Yalnızca Dizin Taraması düğümüne rağmen EXPLAIN'de Yığın Getirmeleri: 100.000 görüyorsunuz. Tipik çözüm nedir?
Sıkça Sorulan Sorular
“Yalnızca INDEX Taramaları ve Görünürlük Haritası” dersi ücretsiz mi?
Evet — “Yalnızca INDEX Taramaları ve Görünürlük Haritası” 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.
“Yalnızca INDEX Taramaları ve Görünürlük Haritası” dersinde ne öğreneceğim?
Sorguları kapsayarak ve görünürlük haritasını güncel tutarak yalnızca INDEX taramalarını etkinleştirin. 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 4. dersidir.
“Yalnızca INDEX Taramaları ve Görünürlük Haritası” 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
- MVCC ve Şişkinliğin Nedenleri
- VACUUM, autovacuum, vacuum_cost_delay
- ANALYZE ve pg_statistic
- Yalnızca INDEX Taramaları ve Görünürlük Haritası