前言
俗话说好记性不如烂笔头,阔别已久,现在开始坚持更新自己的技术文章,记录工作,生活的所遇到的技术问题及解决方案,培养一个良好习惯吧。
正文
最近工作中处理一个接口性能问题耗费了我一番功夫,虽然是一个简单的问题,一眼就能发现问题根源,但是在解决过程中还是踩了不少坑,特此记录下来以供自己和各位同僚在以后遇到类似的问题能绕过这些坑,好了,废话不多说了,开始进入正题。
问题描述
如图所示,就是老生常谈的mysql like 右匹配无法使用索引,导致数据查询缓慢
解决方案
- 第一反应,使用solr搜索引擎,查询速度杠杠的。但是因为这个查询时多表联合查询加上接口优化的时间周期问题,所以,PASS
- 修改索引类型为FULLTEXT(全文搜索),该索引能大幅度提升满足like 左右匹配的需求的查询性能,但是业务需求是必须满足右匹配,该索引最多只能支持全匹配或者左匹配,所以,PASS
- (使用)增加一个倒序字段,将要查询的name字段字符串倒序存储在“name_desc”,使用like的左匹配满足业务需求的原始“name”字段的右匹配需求
踩坑记录
- mysql的索引唯一约束(unique)是指所有记录中字段的值不能重复出现,该约束字母大小写不区分
PS
有什么好的方式解决mysql右匹配性能问题的,大家可以在评论区交流一下