LIKE语句优化

平时我们日常开发用到的LIKE关键字进行模糊匹配会非常多,但是有的情况会使索引失效,导致查询效率变慢,例如:

只要身份证字段包含50就查出来,执行SQL如下:

SELECT * FROM student WHERE id_card like '%50%'

执行结果如图所示:

image.png

用了0.8s左右。

只要身份证号码以50结尾就查出来,执行SQL如下:

SELECT * FROM student WHERE id_card like '%50'

执行结果如图所示:

image.png

用了0.4s左右。

只要身份证号码以50开头的就查出来,执行SQL如下:

SELECT * FROM student WHERE id_card like '50%'

执行结果如图所示:

image.png

这次执行非常快,0.08s左右。

分析SQL:

使用EXPLAIN关键字执行这段SQL:

EXPLAIN SELECT * FROM student WHERE id_card like '%50%'

执行结果如图所示:

image.png


很明显走了全表扫描!

使用EXPLAIN关键字执行这段SQL:

EXPLAIN SELECT * FROM student WHERE id_card like '%50'

执行结果如图所示:

image.png

依旧走了全表扫描!

使用EXPLAIN关键字执行这段SQL:

EXPLAIN SELECT * FROM student WHERE id_card like '50%'

执行结果如图所示:

image.png


这次便走了索引!

腾讯云推出云产品限时特惠抢购活动:2C2G云服务器7.9元/月起
本文链接:https://www.jhelp.net/p/L7T35X4QJmDlnkVj (转载请保留)。
关注下面的标签,发现更多相似文章