İndeks ekleme
- SQL kursu
- Uzman
- Ders 21/45
- 5 dk
Covering index ile sorguyu hızlandır
İndeks ekleme
Üçüncü adımda customer_id sorgusunu hızlandırmak için covering indeks ekleyeceksin. INCLUDE (amount) ile index-only scan sağlanır.
CREATE INDEX idx_orders_customer
ON orders (customer_id)
INCLUDE (amount);Bu sorgu covering index index-only scan sağlar.
idx_orders_customer indeksi oluşturulur.
İndeks ekleme — ayrıntı
İndeks eklendikten sonra EXPLAIN çıktısı Seq Scan'den Index Scan'a döner. Maliyet düşer, okuma hızlanır. Sorgu artık tabloya dokunmadan indeksten okunur.
Uygulama İndeks ekleme
Önceki çözüme CREATE INDEX idx_orders_customer ON orders (customer_id) INCLUDE (amount) ekle.
Başlangıç kodu
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT,
amount NUMERIC,
created_at TIMESTAMP
);
-- plan oku
EXPLAIN SELECT * FROM orders WHERE customer_id = 5;
-- indeks ekle
CREATEÖrnek çözüm
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT,
amount NUMERIC,
created_at TIMESTAMP
);
-- plan oku
EXPLAIN SELECT * FROM orders WHERE customer_id = 5;
-- indeks ekle
CREATE INDEX idx_orders_customer ON orders (customer_id) INCLUDE (amount);Beklenen çıktı
CREATE INDEX
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Covering index neyi sağlar?
- Seq scan
- Full scan
- Index-only scan Doğru cevap
- Cross join
Açıklama: Covering index index-only scan sağlar.
2 INCLUDE yan tümcesi
CREATE INDEX idx_orders_customer ON orders (customer_id) ____ (amount)
CREATE INDEX idx_orders_customer ON orders (customer_id) INCLUDE (amount)
Açıklama: INCLUDE doğru cevap.
3 İndeks ekleme: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
covering |
kapsayan |
INCLUDE |
ekle |
index-only |
indeks tek |
cost |
maliyet |