2012-03-07 52 views
1

我在我的数据库中有一个消息字段,我想以最快的方式搜索用户消息中的特定字符串。由于用户收到很多消息,因此该过程可能会很慢。 这是SQL查询,我至今:最好的mysql方式来搜索字符串

$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()); 

有没有一种方法,以加快搜索?

+1

考虑到你的要求,你的搜索对我来说似乎很好... – DarkAjax 2012-03-07 17:33:15

回答

3

字符串搜索是数据库固有的有问题的风险。使用LIKE是最便携的方式;它当然会搜索你的字符串。这意味着它每记录并读取记录并扫描给定的子字符串,这是您可以搜索数据库的最慢的方式。

在MySQL另一种方法是使用FULLTEXT搜索,这是指数驱动的,但是有一些强加给他们的限制。它更好,但它不是你想要建立搜索引擎的那种东西。

。另一方面,项目如Sphinx其实都是专为运行搜索引擎,并且做得很好。狮身人面像与MySQL很好地结合在一起,专门为解决这个问题而构建。它提供了非常好的搜索准确性和性能,所以如果你认真对待任何事情,这就是要走的路。

+0

感谢您的回答... – BlackFire27 2012-03-07 17:42:33

+0

并使用jquery + php mysql。这是一个快速的PHP和MySQL ..用户没有看到任何页面重新加载,如果你查询执行时间很大。可用性 – Crsr 2012-03-07 17:46:22