SELECT * Production'da da Duruyor
İhtiyacın olmayan kolon da TOAST'a gider

Kart listesi 20 satır. Payload 1.8 MB. body JSONB ve search_tsv de geliyordu. EF ToListAsync() entity'yi materialize etti, SELECT * yazdı. Lokalda 20 satır × boş taslak. Production'da 20 satır × 80 KB gövde.
Yıldız, planner'ı da şişirir
Geniş satır, index-only scan'i öldürür. Heap'e düşülür, TOAST fetch eklenir. title+published_at için gittiğin yerde body'yi de taşırsın. Bunu 'ORM böyle' diye bırakmak, projection yazmamak.
SELECT p.id, p.title, p.slug, p.published_at
FROM posts p
WHERE p.status = 'published'
ORDER BY p.published_at DESC
LIMIT 20;
Aynı filtre, 1.8 MB yerine 6 KB. Serinin ilk yazısındaki index ancak bu kolon kümesiyle index-only olabildi. SELECT * durdukça o index 'var ama yetmiyor' diye kalır. Yıldızı production'da da kestim. Taslak ekranı ayrı sorgu; liste ayrı sorgu.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap