sql中使用like ‘%xxx‘导致索引失效

今天遇到在根据某xxx条件模糊查询时用到 like '%xxx’语句,导致查询相当慢,分析原来是使用了like '%xxx’导致索引失效。

分析一:使用 like ‘%xxx’

sql中使用like ‘%xxx‘导致索引失效
type=ALL(全表扫描full table scan)

possible_keys=NULL(查询过程中有可能用到的索引)

key=NULL(实际使用的索引,如果为 NULL ,则没有使用索引)

filtered=11.11(表示返回结果的行数占需读取行数的百分比, filtered 的值越大越好)

Extra =Using where(表示 SQL 操作使用了 where 过滤条件)

分析二:不使用 like ‘%xxx’

sql中使用like ‘%xxx‘导致索引失效
type=range(范围扫描)

possible_keys=IDX_MKT_RES_NUM_INST(查询过程中有可能用到的索引)

key=IDX_MKT_RES_NUM_INST(实际使用的索引,如果为 NULL ,则没有使用索引)

filtered=100(表示返回结果的行数占需读取行数的百分比, filtered 的值越大越好)

Extra =Using index condition(表示 SQL 操作命中了索引)

总结:前面增加百分号like '%789%'时,索引失效;但是后面增加百分号like '670%'时,索引生效;