v2.5.2
Giriş yap

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

r00t
534 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?

Cevap yaz
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Cevaplar (6)
r00t
1015 gün önce

@qplot, SQL sorgusu içerisinde "WHERE date >= NOW()" benzeri bir sorgum vardı; bunu sorgudan kaldırınca hızlandı neden bilmiyorum. Mecburen kod tarafında tarihi kendim koşullayarak filtreden geçiriyorum şu an.

qplot
1016 gün önce

misal blog uyeid ile uye uyeid ilişkili ise bu ıkısınıde fotoğraftakı gıbı ındexle

https://imgyukle.com/i/Vqxp3y

r00t
1018 gün önce

@qplot ne demek istediğini anlayamadım, örnek verebilir misin?

qplot
1021 gün önce

ilişkili alanları index le sorun çözülür

r00t
1022 gün önce

@munzevi teşekkürler detaylı cevabın için. 3 tablonun JOIN olduğu bir sorgum var; İlk 3 karakter için 1 saniye, 4. karakterden sonra birden 20 saniye sürüyor ortalama sonuç almam. Bu garip geliyor.

munzevi
1022 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%"
SQL

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

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

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"
SQL

bu da biten

SELECT email FROM tablo WHERE username LIKE "r00t%"
SQL