【MySQL】大表上筛选字段-时间戳字段上不要使用函数

1.SQL查看 

Query_time: 145.345483
select count(*) from `pics`.`bicarmodel_new` where date_format(GMT_MODIFIED,'%Y%m%d')= CURDATE()-1;

2.优化方法

where date_format(GMT_MODIFIED,'%Y%m%d')= CURDATE()-1;
--修改为:
WHERE GMT_MODIFIED BETWEEN CURDATE()-INTERVAL 1 DAY  and DATE_SUB(CURDATE(), INTERVAL 1 SECOND);

同时在该字段上创建索引,提能够有效提升运行效率。

3.优化后运行

root@localhost [(none)]>select count(*) from `pics`.`bicarmodel_new` WHERE GMT_MODIFIED BETWEEN CURDATE()-INTERVAL 1 DAY  and DATE_SUB(CURDATE(), INTERVAL 1 SECOND);
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

4.总结

遇到日期时间戳字段,尽量将函数放在时间戳或日期后面的常量上,而不是直接在时间字段上使用函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值