2012-03-07 53 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