mysql ile gelişmiş arama

2 Cevap php

Ben kullanıcı bir textfield o seviyor bir şey koyabilirsiniz benim web sitesi için bir arama fonksiyonu oluşturma. Bu şeyle karşı eşleşen (adı, unvanı, iş, araba markası, ... bunun adı) almak

Ben başlangıçta bir INNER aranacak gerekli her masada JOIN sorgusu yazdı.

SELECT column1, column2, ... FROM person INNER JOIN person_car ON ... INNER JOIN car ...

Bu 6 ya da 8 INNER JOIN, ve bir sürü ... GİBİ '% searchValue%' ile bir sorgu sona erdi

Şimdi bu sorgu MySQL bir time'out neden gibi görünüyor, ve ben bile sorgular sadece çok kaynaklarını alarak benim barındırma sağlayıcı bir uyarı var.

Şimdi tabii ki bu çok yanlış yapıyorum, ama arama fonksiyonları, bu tür doğru yaklaşım nasıl merak ediyorum.

2 Cevap

Tek bir resultset gitmek birden çok sorgu veya BİRLİĞİ birden sorguları kullanın.

Ayrıca, FULLTEXT indeksleri kullanılarak (LIKE '% string%') beri sorguları hızlandırmak için büyük olasılıkla yardım edecek - özellikle lider 'ile'% - (tüm satırlar dizinleri kullanmadan kontrol edilmesi gerekir) son derece yavaş

I Lucene veya Sphynx arama motorları, onlar çok daha hızlı ve ölçeklenebilir sql sorguları daha vardır uygulanması önerilmektedir.