2010-05-13 189 views
2

我爲我的網站創建了一個搜索功能,用戶可以在文本框中放入任何他喜歡的東西。它與任何東西匹配(名稱,標題,工作,汽車品牌,...你的名字)使用高級搜索功能mysql

我最初在每個需要搜索的表上用INNER JOIN編寫查詢。

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

這結束了在6個或8個內部連接的查詢,以及一大堆WHERE ... LIKE「%searchvalue%」

現在這個查詢似乎導致MySQL中的time'out ,我甚至從我的主機提供商那裏得到了一個警告,那就是這些查詢只佔用了太多的資源。

現在很明顯,我這樣做很錯誤,但我想知道如何正確的方法來這些類型的搜索功能。

回答

1

使用多個查詢或UNION多個查詢,以便它們進入單個結果集。因爲(LIKE'%string%') - 尤其是前導'%' - 使用FULLTEXT索引很可能有助於加快查詢的速度 - 非常慢(所有行都需要檢查而不使用索引)

+0

謝謝,這是一個明確的答案 – Nathan 2010-05-13 14:03:21

0

我建議實施LuceneSphynx搜索引擎,它們比sql查詢要快得多和可伸縮。