Mysql效率问题

gewentang 2010-01-06 02:49:07

CREATE TABLE `ch1` (
`id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
`no` int(10) unsigned DEFAULT NULL,
`dtime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
查询语句 select sum(no) as number,dtime as date from ch1 group by month(dtime)
数据大约1000w条记录,需要40秒,感觉太慢了,有什么解决办法?
...全文
91 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
军爷_010 2010-01-08
  • 打赏
  • 举报
回复
select sum(no) as number,dtime as date from ch1 group by month(dtime)
这条语句用不上索引,因为group by 在有聚合函数(sum(no))的时候不起作用。
索引在这里不好用,建议统计改为触发器,然后按要求触发单独存放在一张统计表,以后直接查统计表
gewentang 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
需要在dtime上创建一个索引。

create index idx_dtime on ch1(dtime);
[/Quote]
索引不起任何左右 这是分析执行语句的时候的结果
Extra: Using temporary; Using filesort
gewentang 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 gewentang 的回复:]

CREATE TABLE `ch1` (
  `id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `no` int(10) unsigned DEFAULT NULL,
  `dtime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
)
查询语句 select sum(no) as number,dtime as date from ch1 group by month(dtime)
数据大约1000w条记录,需要40秒,感觉太慢了,有什么解决办法?
[/Quote]索引不起任何左右 这是分析执行语句的时候的结果
Extra: Using temporary; Using filesort
gewentang 2010-01-08
  • 打赏
  • 举报
回复
建立索引之后大约需要多少时间?
军爷_010 2010-01-07
  • 打赏
  • 举报
回复
同意诸位意见!
bolink5 2010-01-06
  • 打赏
  • 举报
回复
这个建个索引就OK了啊
bancxc 2010-01-06
  • 打赏
  • 举报
回复
分组列上建索引 group by month(dtime)
huolin 2010-01-06
  • 打赏
  • 举报
回复
楼上的方法
wwwwb 2010-01-06
  • 打赏
  • 举报
回复
如果只是这条语句的话,在dtime上建立索引试试
ACMAIN_CHM 2010-01-06
  • 打赏
  • 举报
回复
需要在dtime上创建一个索引。

create index idx_dtime on ch1(dtime);

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧