搜索字符串的最佳mysql方式

时间:2012-03-07 17:29:42

标签: php mysql sql

我的数据库中有一个消息字段,我想以最快的方式在用户消息中搜索特定的字符串。由于用户收到了很多消息,因此进程可能很慢。 这是我到目前为止的SQL查询:

$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 个答案:

答案 0 :(得分:3)

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

MySQL中的另一种选择是使用FULLTEXT搜索,这些搜索是由索引驱动的,但是对它们施加了许多限制。它更好,但它不是你想要建立搜索引擎的那种东西。

另一方面,像Sphinx这样的项目实际上是为运行搜索引擎而设计的,而且做得很好。 Sphinx与MySQL紧密相关,专门为解决这个问题而构建。它提供了非常好的搜索准确性和性能,所以如果你正在做任何严肃的事情,那就是你要走的路。

相关问题