我有两张这样的table:
企业
FullName Type
ABC aze 1
DEF rty 2
地址
Address1 Address2 Address3 Postcode City
165 Ward Street E1 7AW London
167 Ward Street E1 7AW London
10 Auckland Street N1 0AA London
我会做很多查询来搜索地址是否存在和/或企业是否存在=
。
对于企业的查询,它将在VARCHAR
和SMALLINT
(类型列)字段上:WHERE Type = 1 AND FullName = '...'
对于地址的查询,它将在VARCHAR
字段上:WHERE address1 = '...' AND address2 = '...' AND address3 = '...' AND postcode = '...' AND city = '...'
要获得最佳响应时间,应该使用复合索引还是FULLTEXT
索引?
2条答案
按热度按时间egdjgwm81#
Full-text
搜索是使用MATCH()
AGAINST()
语法执行的,因为你使用的是WHERE
,而运算符=
意味着你要搜索的是确切的字符串,所以复合索引是你的最佳选择:如果要运行全文搜索,则必须在要运行的列上设置全文索引。
js5cn81o2#
简短回答:综合指数
长回答:
上面的索引将比FULLTEXT快,因为它是一个完美的匹配(所有
=
,没有范围等)。你不需要担心“模糊”匹配吗?如果这样做,
INDEX
和FULLTEXT
都没有多大用处。