2012-03-07 3 views
1

J'ai un champ de messages dans ma base de données, je veux rechercher une chaîne particulière dans les messages des utilisateurs de la manière la plus rapide. Comme l'utilisateur a reçu beaucoup de messages, le processus peut être lent. Ceci est la requête SQL que j'ai jusqu'à présent:Meilleur moyen mysql de rechercher à travers une chaîne

$result=mysql_query(" 
      SELECT message_content 
      FROM `messages` AS ms 
      INNER JOIN users1 AS us ON us.user_id=ms.user_id 
      WHERE us.user_id=".$user_id." AND message_content LIKE '%".$string_to_search."%'") or die(mysql_error()); 

est-il un moyen d'accélérer la recherche?

+1

Considérant les exigences que vous avez, votre recherche me semble bien ... – DarkAjax

Répondre

3

La recherche de chaînes est une entreprise problématique par nature avec les bases de données. L'utilisation de LIKE est le moyen le plus portable de le faire; il cherche certainement vos chaînes. Cela implique qu'il lit chaque enregistrement et analyse pour la sous-chaîne donnée, qui est la façon la plus lente de rechercher une base de données.

Une alternative dans MySQL est d'utiliser les recherches FULLTEXT, qui sont pilotées par les index mais qui sont soumises à un certain nombre de restrictions. C'est mieux, mais ce n'est pas le genre de chose sur laquelle vous voudriez construire un moteur de recherche. D'autre part, des projets tels que Sphinx sont en fait conçus pour l'exécution d'un moteur de recherche, et le font très bien. Sphinx est très proche de MySQL et a été spécialement conçu pour résoudre ce problème. Il offre une très bonne précision de recherche et de performance, donc si vous faites quelque chose de sérieux, c'est la voie à suivre.

+0

Merci pour votre réponse ... – BlackFire27

+0

et utilisez jquery + php mysql. C'est un peu rapide puis php et mysql .. L'utilisateur ne voit pas de page rechargée si vous interrogez le temps d'exécution est grand. L'APTITUDE À L'UTILISATION – Crsr

Questions connexes