mysql查询语句中使用DATE_FORMAT函数对索引的影响? ? ?

1.出现的问题如下:

表数据量很大, 百/千万级别的数据, 进行表查询发现很慢很慢…( 10s ~ 20s ), 于是进行优化.

2.explain查看是否使用索引?

原SQL语句: ( 只贴出部分语句 )

explain select id from user where DATE_FORMAT(createDate,'%Y-%m-%d') >= '2020-01-12'

执行分析如下: ( crateDate这个时间字段, 并没有使用索引, 况且进行了全表扫描( 百万条数据 ) , 当然会很慢了. )
在这里插入图片描述


优化SQL语句:

explain select id from user where createDate >= '2020-01-12'

执行分析如下: ( 使用了索引, 查询条数减少 )
在这里插入图片描述

3.结论:

应尽量避免使用该函数DATE_FORMAT, 索引会失效, 导致全表扫描.

发布了107 篇原创文章 · 获赞 173 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_42986107/article/details/103948562