我有一个表格,列出了一些可能在不同国家/地区拥有许多分支机构的公司。这些国家入countries
字段中。
现在,我必须创建一个搜索系统,允许用户找到在特定国家/地区拥有任何分支机构的公司。
我的问题是:我必须使用哪一个? MATCH AGAINST
还是LIKE
?查询必须搜索所有记录以查找完全匹配的项目。
- 注意:记录可能有不同的国家/地区名称,以逗号分隔。
MATCH AGAINST
子句用于全文搜索。
为此,您需要在搜索列上创建一个full text index
countries
.
full text index
搜索比LIKE '%country%'
搜索要快得多。
我会改变实现:拥有一个包含多个值的字段是一个坏主意,例如,很难维护 - 您将如何从公司remove
一个国家/地区实现?
我相信更好的方法是有一个单独的表companies_countries该表将有两列:company_id
和country_id
,并且每个company
可以有多行。
你应该使用 LIKE
.因为正如@Omesh提到的MATCH AGAINST
子句用于全文搜索。全文搜索需要整列进行搜索。