MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 3314|回复: 5
打印 上一主题 下一主题

[思路] MySQL 利用多线程提升查询性能的一种思路

[复制链接]
跳转到指定楼层
1#
发表于 2016-9-28 10:49:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:有张大表,按照时间查询,如果是一个月,查询时间120秒左右,如果是按天查询大概1-2秒左右。
请问:谁了解利用mysql开启多线程并发查询的方法?
例如:查询一个月数据,按照每天的sql并发30进行一次性查询得出结果。
求解!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
2#
发表于 2016-9-28 17:06:51 | 只看该作者
据我了解,mysql不支持多线程处理同一个sql语句
3#
发表于 2016-9-28 17:09:04 | 只看该作者
你把sql语句贴出来,看下可以优化不。。表有多少行
4#
 楼主| 发表于 2016-9-29 11:55:21 | 只看该作者
13980908582 发表于 2016-9-28 17:09
你把sql语句贴出来,看下可以优化不。。表有多少行


rows:11.78M
Data size :7.33G
Index size:5.34G
Total size :12.67G

t_flow_order 48个字段

select * from t_flow_order where order_date between '2016-08-01' and '2016-08-30'

5#
发表于 2016-9-29 16:45:02 | 只看该作者
你一定要查所有字段么?
如果你的字段可以单纯通过时间筛选,可以考虑根据时间分区啊。。
现在不分区的情况下,你试下延迟加载数据,order_date要加索引,也就是改成这种形式:
select * from t_flow_order where id in (select t_flow_order.id(表的主键) from t_flow_order where order_date between '2016-08-01' and '2016-08-30' );
我不确定效果咋样哈,给个建议
6#
 楼主| 发表于 2016-9-30 14:06:45 | 只看该作者
13980908582 发表于 2016-9-29 16:45
你一定要查所有字段么?
如果你的字段可以单纯通过时间筛选,可以考虑根据时间分区啊。。
现在不分区的情 ...

首先,谢谢你的回答
我这个是一个查询页面,时间只是默认的查询条件,算算还有其他的7个查询条件。而且我这个页面还有个统计的功能,就是把所有的数据值加起来限制,主要慢就是慢在这个统计上,一天的统计很快,但如果一个月时间的统计就很慢了。所以想着能不能并发一次性按每天查询

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-5-16 19:50 , Processed in 0.068549 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表