2016-07-13 73 views
0

我在創建一個搜索方法,用戶可以輸入一個或多個單詞,並返回任何可能包含這些單詞的數據。高效的MySQL搜索

我有以下查詢

select e.eventName 
from events e 
where e.eventName like '%emma%' or 
     e.eventId in (select et.eventId from event_tags et where et.tagName like '%emma%'); 

` 但是這需要高達33.03秒。有沒有更有效的方式來搜索多個表,然後用'like'呢?我該如何改進?我找到一個鏈接MySQL BOOLEAN

這是處理搜索一個或多個關鍵字的首選方法嗎?

+1

看看全文搜索,而不是使用LIKE –

+0

爲什麼你使用'like'而不是'='? –

+0

哈哈,因爲我很無知:)我會嘗試這個建議。 – stingMantis

回答

1
select e.eventName from events e inner join event_tags et on e.eventId=et.eventId and et.tagName like "%emma%" 
union 
select e2.eventName from events e2 where e2.eventName like "%emma%" 

它刪除了in子句。你可以試試

+0

謝謝黑狗,這個技巧和速度非常快。萬xexie。 :) – stingMantis