mysql 怎样优化查询效率

Lcindep110 2017-05-07 09:44:53
目前数据量是30W,查询就要15秒了


...全文
459 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lcindep110 2017-05-10
  • 打赏
  • 举报
回复
引用 12 楼 ACMAIN_CHM 的回复:
create index xxx_1 on jh_device_upload(terminal,FinishTime);
可以terminal,ID组合吗?
Lcindep110 2017-05-10
  • 打赏
  • 举报
回复
引用 12 楼 ACMAIN_CHM 的回复:
create index xxx_1 on jh_device_upload(terminal,FinishTime);
用了这个方法,效率又提升了。
Lcindep110 2017-05-10
  • 打赏
  • 举报
回复
引用 6 楼 zjcxc 的回复:
GROUP BY之后的 LIMIT 没什么意义 对于一下加 GROUP BY 和不加的时间差别 如果差别不大,问题在条件上 如果差别大,问题在 GROUP BY上,建议 date_format(finishtime,'%Y%m%d%H') as d 创建为生成列,并在 terminal,d 上建索引
现在数据增长到150W左右,效率又降低了
ACMAIN_CHM 2017-05-10
  • 打赏
  • 举报
回复
create index xxx_1 on jh_device_upload(terminal,FinishTime);
Lcindep110 2017-05-10
  • 打赏
  • 举报
回复
引用 16 楼 li905663280 的回复:
联合索引,如果只是对其中某一列加上索引,在联合查询的时候会失效,相当于不走索引,所以,需要需要创建联合索引。
好的。
li905663280 2017-05-10
  • 打赏
  • 举报
回复
联合索引,如果只是对其中某一列加上索引,在联合查询的时候会失效,相当于不走索引,所以,需要需要创建联合索引。
Lcindep110 2017-05-09
  • 打赏
  • 举报
回复
引用 6 楼 zjcxc 的回复:
GROUP BY之后的 LIMIT 没什么意义 对于一下加 GROUP BY 和不加的时间差别 如果差别不大,问题在条件上 如果差别大,问题在 GROUP BY上,建议 date_format(finishtime,'%Y%m%d%H') as d 创建为生成列,并在 terminal,d 上建索引
换成你的方法,的确查询效率高出很多。非常感谢!
zhujinqiang 2017-05-09
  • 打赏
  • 举报
回复
用对了索引 查询效率就能提升了。
Lcindep110 2017-05-08
  • 打赏
  • 举报
回复
数据每天都在增加,大概一天会增加3000条左右
Lcindep110 2017-05-08
  • 打赏
  • 举报
回复
用了楼上的方法,1440条数据花了17S select terminal, date_format(finishtime,'%Y%m%d%H') as d from jh_device_upload where terminal=6225 and FinishTime BETWEEN '2017-05-08 00:00:01' and '2017-05-08 12:59:59' group by terminal,d limit 1440 受影响的行: 0 时间: 17.703s
c_sdn_shang_bu_qi 2017-05-08
  • 打赏
  • 举报
回复
走了索引,但是你返回了一万行数据,可以试试limit 分页
zjcxc 2017-05-08
  • 打赏
  • 举报
回复
年/月/日/时 的4个,直接用这个替换试试 date_format(now(),'%Y%m%d%H')
Lcindep110 2017-05-08
  • 打赏
  • 举报
回复
引用 6 楼 zjcxc 的回复:
GROUP BY之后的 LIMIT 没什么意义 对于一下加 GROUP BY 和不加的时间差别 如果差别不大,问题在条件上 如果差别大,问题在 GROUP BY上,建议 date_format(finishtime,'%Y%m%d%H') as d 创建为生成列,并在 terminal,d 上建索引
select terminal, date_format(finishtime,'%Y%m%d%H') as d, avg(col1) as c1 如果在加上avg(col1) as c1,是不是效率又变慢了。
zhujinqiang 2017-05-08
  • 打赏
  • 举报
回复
引用 6 楼 zjcxc 的回复:
GROUP BY之后的 LIMIT 没什么意义 对于一下加 GROUP BY 和不加的时间差别 如果差别不大,问题在条件上 如果差别大,问题在 GROUP BY上,建议 date_format(finishtime,'%Y%m%d%H') as d 创建为生成列,并在 terminal,d 上建索引
Lcindep110 2017-05-08
  • 打赏
  • 举报
回复
好的,我试试看。
zjcxc 2017-05-08
  • 打赏
  • 举报
回复
GROUP BY之后的 LIMIT 没什么意义 对于一下加 GROUP BY 和不加的时间差别 如果差别不大,问题在条件上 如果差别大,问题在 GROUP BY上,建议 date_format(finishtime,'%Y%m%d%H') as d 创建为生成列,并在 terminal,d 上建索引
Lcindep110 2017-05-07
  • 打赏
  • 举报
回复
请问各路大神,这样的查询语句怎么样优化呢?

57,065

社区成员

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

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