2016-07-13 51 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