记一个DATE_FORMAT的坑。
有一张表600w数据,CREATE_DATE为索引,执行查询某天数据sql如下
修改前: 查询不出来,巨慢。
select *
from tbl_ec_document_2019
where DATE_FORMAT(CREATE_DATE,'%Y-%m-%d')='2020-12-03';
修改后: 走了索引,很快。
select *
from tbl_ec_document_2019
where DATE_FORMAT CREATE_DATE>'2020-12-03' and CREATE_DATE<'2020-12-04' ;
原因:
我们在CREATE_DATE上创建索引,而DATE_FORMAT(CREATE_DATE,’%Y-%m-%d’)会使得索引字段变为DATE_FORMAT(CREATE_DATE,’%Y-%m-%d’)这个字段,而我们数据库表中没有这个字段的索引,所以会进行全盘扫描。