CodeBlanks Logo Icon CodeBlanks

Plan okuma

EXPLAIN ile yavaş planı incele

Plan okuma

İkinci adımda EXPLAIN ile sorgu planını okuyacaksın. Plan, indeks kullanıp kullanmadığını veya tam tablo taraması yaptığını gösterir.

EXPLAIN SELECT * FROM orders
WHERE customer_id = 5;

Bu sorgu plan Seq Scan veya Index Scan gösterir.

orders kaynağından tüm sütunlar seçilir. WHERE customer_id = 5 koşulunu sağlamayan satırlar elenir.

Plan okuma — ayrıntı

Plan çıktısında Seq Scan görüyorsan indeks yok demektir. Index Scan görüyorsan indeks kullanılıyor. Maliyet değerleri planın ucuzluğunu gösterir.

Uygulama Plan okuma

Önceki orders tablosu üzerinde EXPLAIN SELECT * FROM orders WHERE customer_id = 5 çalıştır.

Başlangıç kodu

query.sql
CREATE TABLE orders (
  id SERIAL PRIMARY KEY,
  customer_id INT,
  amount NUMERIC,
  created_at TIMESTAMP
);
-- plan oku
EXPLAIN

Örnek çözüm

query.sql
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;

Beklenen çıktı

Seq Scan on orders

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Plan komutu

Soru
____ SELECT * FROM orders WHERE customer_id = 5;
Cevap
EXPLAIN SELECT * FROM orders WHERE customer_id = 5;

Açıklama: EXPLAIN doğru cevap.

2 Seq Scan neyi gösterir?

  • İndeks taraması
  • Tam tablo taraması Doğru cevap
  • Hash join
  • Merge join

Açıklama: Seq Scan tam tablo taraması gösterir.

3 Plan okuma: kavramları eşleştir

Kavram Anlamı
EXPLAIN plan
Seq Scan tam tarama
Index Scan indeks
cost maliyet

Uzman bölümündeki tüm dersler