登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. LINUX
  4. Mysql
  5. 正文

Mysql查询当天/当月数据SQL优化案例节选

2020-01-09

SQL查询速度慢,大多数在于表结构或SQL质量差,而不是服务器性能;

案例一:

部分业务报表需要展示当日、本周、本月、本季度的业务数据,若使用百度Top10的版本例如:

select * from 表名 where to_days(时间字段名) = to_days(now());

会出现比较明显的性能问题,若数据量达千万,则查询时间需要数秒。即使对查询字段建立索引,也没有任何改善。

所以很明显,采用上述方法并未命中索引,实际上应该对数据做了全遍历;

改善方案:

采用下面的SQL查询时,也能达到需要的效果,但查询时间仅为几十毫秒:

select * from 表名 where 查询字段名 BETWEEN DATE_FORMAT(NOW(),"%Y-%m-%d 00:00:00") and DATE_FORMAT(NOW(),"%Y-%m-%d 23:59:59")

注意,采用改善方案SQL时,需要考虑Mysql Client和Mysql Server之间的时区陷阱。

标签: 暂无
最后更新:2020-10-28

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号