MYSQL查询语句优化
2016-02-17 00:00
465 查看
一、日期查询优化
在MYSQL中速度最慢的不是in查询,而是date_format以及FROM_UNIXTIME两个函数的日期时间转换,执行时间可能超过两秒,造成网站巨卡
用PHP的函数代替MYSQL的函数来完成将会大大的缩减时间
今日:FROM_UNIXTIME(lastplaytime,"%Y-%m-%d")=FROM_UNIXTIME(now(),"%Y-%m-%d")
第一次优化:FROM_UNIXTIME(lastplaytime,"%Y-%m-%d")="'.date('Y-m-d').'"'
最终优化:lastplaytime>='.strtotime(date('Y-m-d'))
时间戳大于今天凌晨的时间戳就是本日的
本周:FROM_UNIXTIME(posttime,"%Y")="'.date('Y').'" and FROM_UNIXTIME(posttime,"%U")=FROM_UNIXTIME(now(),"%U")'
优化后:posttime>='.strtotime(date('Y-m-d',(time()-(date('N')-1)*86400))))
时间戳大于本周一的时间戳就表示是本周的
本月:date_format(FROM_UNIXTIME(posttime),"%Y-%m")="'.date('Y-m').'"
优化后:posttime>'.strtotime(date('Y-m-01'))
时间戳大于本月第一天的时间戳就表示是本月的
在MYSQL中速度最慢的不是in查询,而是date_format以及FROM_UNIXTIME两个函数的日期时间转换,执行时间可能超过两秒,造成网站巨卡
用PHP的函数代替MYSQL的函数来完成将会大大的缩减时间
今日:FROM_UNIXTIME(lastplaytime,"%Y-%m-%d")=FROM_UNIXTIME(now(),"%Y-%m-%d")
第一次优化:FROM_UNIXTIME(lastplaytime,"%Y-%m-%d")="'.date('Y-m-d').'"'
最终优化:lastplaytime>='.strtotime(date('Y-m-d'))
时间戳大于今天凌晨的时间戳就是本日的
本周:FROM_UNIXTIME(posttime,"%Y")="'.date('Y').'" and FROM_UNIXTIME(posttime,"%U")=FROM_UNIXTIME(now(),"%U")'
优化后:posttime>='.strtotime(date('Y-m-d',(time()-(date('N')-1)*86400))))
时间戳大于本周一的时间戳就表示是本周的
本月:date_format(FROM_UNIXTIME(posttime),"%Y-%m")="'.date('Y-m').'"
优化后:posttime>'.strtotime(date('Y-m-01'))
时间戳大于本月第一天的时间戳就表示是本月的
相关文章推荐
- [转载]MySQL索引原理与慢查询优化
- Video-No.04 燕十八:MySQL视频教程
- MySQL root密码找回
- MySQL乱码问题解决总结
- 基于Mybatis的Mysql数据库文档生成工具,支持生成docx(原创)
- 初涉MySQL
- mysql数据库设置自增id初始值
- MySQL知识(一)——数据库概念及基本操作
- mysql更新一个表里的字段等于另一个表某字段的值
- MYSQL 主从复制
- MYSQL远程登录权限设置(转)
- mac下完整删除mysql
- LVS+MYCAT读写分离+MYSQL同步部署+故障自动转移
- mysql报错Cannot check for MySQL Daemon startup because of mysqladmin failure
- MySQL主键重复问题解决 Duplicate entry '787192513' for key 'PRIMARY'
- mysql case 使用方法
- 简单了解mysql表分区
- MySQL详解--锁
- mysql列合并
- Mysql 根据id查所有父级或子级