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