Merhaba,
https://paste.laravel.io/30520bb6-3efe-420d-bec8-f13e59f9bc44 bu linkteki filtreleme fonksiyonum var. Buranın daha hızlı çalışması için optimize edebilir miyiz ? Refactor de yapabiliriz tüm önerilere açığım.
Saygılarımla,
Merhaba,
https://paste.laravel.io/30520bb6-3efe-420d-bec8-f13e59f9bc44 bu linkteki filtreleme fonksiyonum var. Buranın daha hızlı çalışması için optimize edebilir miyiz ? Refactor de yapabiliriz tüm önerilere açığım.
Saygılarımla,
$query->where('pool_customer.customer_name', 'LIKE', '%' . $searchId . '%');
Eğer çok fazla müşteri varsa yavaş çalışır. Burada fulltext search ya da PostgreSQL kullandığınız için pg_trgm kullanın.$query2->orWhereJsonContains('customer_ids', (string) $id);
burada customer_ids alanı jsonb olmalı ve index gerekebilir.$eagerLoadRelations = ['lock', 'statu', 'label', 'pool', 'user', 'tempCustomerData'];
yaparak ilişkilerdeki tüm veriyi yüklemişsiniz. label:id,name
gibi sadece ihtiyacınız olan alanları yükleyin. Bu şekilde alanları ayrı ayrı belirtirken ilişki many-to-many değilse kurulan sütunu da eklemeyi unutmayın. Yoksa kayıt sayısına göre çok fazla bellek tüketebilir.Dikkatimi çekenler bunlar. Hangi alanda nasıl indeksler var bilmiyoruz ve ilişkiler de nasıl kurulu bilmiyoruz. Yapmanız gereken örneğin Laravel Telescope kullanıp filtreleme yaptığınızda oluşan sorguları almak ve EXPLAIN ANALYZE
ile inceleyerek table scan yapan sorguları bulmak ve gerekli indeksleri oluşturmak. EXPLAIN çıktısını AI ile yorumlatabilirsiniz.