sql中使用like ‘%xxx‘导致索引失效
今天遇到在根据某xxx条件模糊查询时用到 like '%xxx’语句,导致查询相当慢,分析原来是使用了like '%xxx’导致索引失效。
分析一:使用 like ‘%xxx’
type=ALL(全表扫描full table scan)
possible_keys=NULL(查询过程中有可能用到的索引)
key=NULL(实际使用的索引,如果为 NULL ,则没有使用索引)
filtered=11.11(表示返回结果的行数占需读取行数的百分比, filtered 的值越大越好)
Extra =Using where(表示 SQL 操作使用了 where 过滤条件)
分析二:不使用 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%'时,索引生效;