Supabase sorgu optimizasyonu
Supabase sorgularını performans için yeniden yazar.

Prompt Metni
Supabase'deki news tablosundan yalnızca id, title, slug ve published_at alanlarını getir. status = published filtresi uygula. Sonuçları published_at ve id ile kararlı biçimde sırala, sayfa başına 20 kayıt getir ve ikinci sayfa örneğini göster. Uygun PostgreSQL indeksini ve N+1 riskini açıkla.
Prompt Sonucu
İlk sayfa:
const { data, error } = await supabase
.from('news')
.select('id, title, slug, published_at')
.eq('status', 'published')
.order('published_at', { ascending: false })
.order('id', { ascending: false })
.range(0, 19)
İkinci sayfa:
const { data, error } = await supabase
.from('news')
.select('id, title, slug, published_at')
.eq('status', 'published')
.order('published_at', { ascending: false })
.order('id', { ascending: false })
.range(20, 39)
Önerilen kısmi indeks:
CREATE INDEX news_published_order_idx
ON news (published_at DESC, id DESC)
WHERE status = 'published';
id ikinci sıralama anahtarı olarak aynı published_at değerine sahip kayıtların sırasını sabitler. Büyük tablolarda offset tabanlı range yerine son görülen published_at ve id değerlerini kullanan keyset pagination daha verimlidir.
N+1 riski, her haber için yazar veya etiketleri ayrı sorguyla çekildiğinde oluşur. İlişkili alanlar tek select içinde alınmalı veya veriler toplu sorgulanmalıdır.
Benzer Promptlar

Kod
Zod ile ortam değişkenleri
Eksik gizli anahtarı açılışta yakalayan Zod ortam şeması.

Kod
Next.js dinamik metadata
Promise params ile başlık, açıklama ve mutlak Open Graph adresi.

Kod
Webhook HMAC doğrulaması
timingSafeEqual kullanan webhook imza kontrolü.

Kod
React iyimser beğeni
Beğeni sayısını sunucu yanıtından önce güncelleyen useOptimistic örneği.