Postgres için oldukça yeni ve burada bir sorun var gibi görünüyor ve hangi yöne gideceğimden emin değilim.
Bazı performans sorunlarına neden olan bir sorgum var ve bunu nasıl optimize edeceğimi çözemiyorum.
Sorgu aslında oldukça basittir:
SELECT transactions.* FROM transactions
LEFT OUTER JOIN companies ON "companies"."id" = "transactions"."company_id"
WHERE companies.code ILIKE '%777%'
ORDER BY transactions.id desc LIMIT 10
Adına 777 olan bir şirket için olan tüm işlemleri bulmak istiyorum. Veritabanında yaklaşık 20 milyon işlem ve yaklaşık 200 şirket var.
Sorgu şu anda 10'luk bir sınırımız olsa bile zaman aşımına uğruyor. Bunun, İLİKE bir dizin kullanmadığı için korkunç derecede yavaş olduğuna inanıyorum.
Bu, WHERE filtresini BİRLEŞİME eklemek isteyebileceğiniz bir örnek olabilir mi? Bunu test ettim ve bir kayıt bulunursa yıldırım hızında çalışıyor. Kayıt bulunamazsa, tekrar zaman aşımına uğrar.
Bakmamız gereken, buradaki hızı artıracak bir Endeks türü var mı?