v2.5.2
Giriş yap

MySQL Like 3 karakterden fazla aratınca aşırı yavaşlama problemi

r00t
487 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhabalar;
Select * From tablo WHERE username LIKE "%abcdefgh%"

şeklindeki sorguda; yüzdeler arasına 3 karaktere kadar yazıp aratınca saniye içerisinde arama sonuçları çıkarken; 4. ve sonraki uzunluklarda ciddi bir yavaşlık oluyor.

Input üstünde ajax ile keyup durumuna göre ajax ile istek atıyorum; ilk 3 tuşta anında autocomplete cevabı alabiliyorken; 4. karakterden sonra çok ciddi süreler bekletiyor.
Kodsal bir durum mu diye, MysqlWorkbench üstünden SQL sorgusu yapıp karşılaştırdığımda benzer sonuç ile karşılaştım.
Mysql tarafında da SQL sorgusuna 4. karakterden sonra arama yapmaya çalışınca çok uzun süre bekletiyor.

Önerileriniz nedir, performans sorununu nasıl çözerim?

munzevi
872 gün önce

sorgunun yavaşlama nedeni tüm kolonlarda arama yapıyor olman. örneğin kullanıcının eposta adresini arıyorsun ve bunu kullanıdı adına göre yapıyorsun, kodun şöyle olmalıdır;

SELECT email FROM tablo WHERE username LIKE "%value%"

birden fazla kolon için virgülle kullanacağın verileri çoğaltabilirsin

SELECT email, image, birthday FROM tablo WHERE username LIKE "%value%"

hiçbir sorgunda * işareti kullanmamanı şiddetle tavsiye ederim.

edit: ayrıca başlayan veya biten ifadeleri ile arama yapman daha hızlı sonuçlar döndürecektir.

bu başlayan araması örneği

SELECT email FROM tablo WHERE username LIKE "%r00t"

bu da biten

SELECT email FROM tablo WHERE username LIKE "r00t%"