MySQL索引优化之like,regexp

① 向sys_option添加索引

ALTER TABLE sys_option2 ADD KEY(descript);

②情况一:前后%号匹配

EXPLAIN SELECT * FROM sys_option2 WHERE descript LIKE '%房号%';

 

可以看到type显示的是“ALL”,未使用索引

③ 情况二:后%号匹配

EXPLAIN SELECT * FROM sys_option2 WHERE descript LIKE '房号%';

 

 这时的type显示”range“,这时使用的是索引

注:range类型,它是索引上的范围查询,它会在索引上扫码特定范围内的值。

④ 情况三:前%号匹配

EXPLAIN SELECT * FROM sys_option2 WHERE descript LIKE '%房号';

 

这个时候显示的还是“ALL”,未使用索引

⑤ 情况四:regexp

EXPLAIN SELECT * FROM sys_option2 WHERE descript REGEXP '房号';

 

 

 还是“ALL”,未使用索引,全表扫描。

个人小结:尽量将查询改写成like后%号匹配,以达到提高查询效率的目的。

 

posted @ 2021-10-26 14:05  happywithus  阅读(681)  评论(0)    收藏  举报