MySQL中查询企业与地址时,应使用联合索引还是FULLTEXT索引?
选择联合索引而非FULLTEXT索引
核心判断依据
你的所有查询都是精确等值匹配,这是联合索引的典型适用场景。FULLTEXT索引专为全文检索(比如含关键词的模糊搜索)设计,对你的场景毫无优化作用,反而会额外增加索引维护成本。
具体索引创建建议
Enterprises表
针对查询语句WHERE Type = 1 AND FullName = '...',创建以下联合索引:
CREATE INDEX idx_enterprise_type_fullname ON Enterprises(Type, FullName);
建议把过滤性更强的数值型字段Type放在索引前列,能更快缩小查询范围,提升匹配效率。
Addresses表
针对查询语句WHERE address1 = '...' AND address2 = '...' AND address3 = '...' AND postcode = '...' AND city = '...',创建包含所有查询字段的联合索引:
CREATE INDEX idx_address_full ON Addresses(Address1, Address2, Address3, Postcode, City);
如果Address2或Address3这类字段经常为空,可以调整索引顺序,将非空且过滤性更强的字段(比如Postcode、City)放在前面,进一步优化查询速度。
为什么FULLTEXT索引不适合?
FULLTEXT索引是用来处理MATCH(col) AGAINST('关键词')这类全文搜索场景的,它无法优化精确的等值匹配查询。如果强行使用FULLTEXT索引,数据库依然会执行全表扫描,完全达不到你想要的响应时间优化效果。
内容的提问来源于stack exchange,提问作者user5234584
相关产品推荐
相关产品推荐

