mysql统计问题SUM今天的问题

MySql 码拜 9年前 (2016-02-22) 1446次浏览
$ip_sql=”select  SUM(fen) as q from table  where  nl_ew=3  and  date_format(nl_time,”%Y-%m-%d”)=curdate()    “;
查询今天的积分统计…
为什么会超时……(以前还可以用..超过400万数据的时候 就不行了…)
select  SUM(fen) as q from table   这个就不会超时
已经在nl_ew 跟nl_time  上做了索引….数据库引擎是InnoDB
数据大致在600W左右….
帮本人优化下..或出个主意…
解决方案

10

date_format(nl_time,”%Y-%m-%d”)  这个转化不走索引了吧。

10

引用 2 楼 amu1433 的回复:

直接超时了….
time_out 了  数据600W左右
and  date_format(nl_time,”%Y-%m-%d”)=curdate()   这样写是不是nl_time 的索引是不是没有用到?
nl_time的数据类型是  Y%-%m-%d  H:i:s 类型2015-08-05 00:20:05 这样的
大家储存数据库的话是日期   还是直接储存成时间戳
insert ..now()   这样插入的是日期格式  还是时间戳格式…

写成这样:and  date_format(nl_time,”%Y-%m-%d”)=curdate()   确实是会用不上nl_time字段的索引的。

10

引用 4 楼 amu1433 的回复:

mysql统计问题SUM今天的问题
mysql统计问题SUM今天的问题

另外,你这个 nl_ew 索引,是只包含 nl_ew字段吗?
本人觉得 假如 你建的是一个 nl_ew 和 nl_time的联合索引,应该能快,当然,语句必须要改成:
and nl_time >= curdate() and nl_time < date_Add(curdate(),interval 1 day)

10

引用 3 楼 ACMAIN_CHM 的回复:

估计是没有创建合适的索引。
以文本方式贴出
explain select …
show index from ..
以供分析。

不要贴图,并不方便别人分析。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql统计问题SUM今天的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)