老俵哥 发表于 2016-9-28 10:49:47

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

问题描述:有张大表,按照时间查询,如果是一个月,查询时间120秒左右,如果是按天查询大概1-2秒左右。
请问:谁了解利用mysql开启多线程并发查询的方法?
例如:查询一个月数据,按照每天的sql并发30进行一次性查询得出结果。
求解!

13980908582 发表于 2016-9-28 17:06:51

据我了解,mysql不支持多线程处理同一个sql语句

13980908582 发表于 2016-9-28 17:09:04

你把sql语句贴出来,看下可以优化不。。表有多少行

老俵哥 发表于 2016-9-29 11:55:21

13980908582 发表于 2016-9-28 17:09
你把sql语句贴出来,看下可以优化不。。表有多少行

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn8AAAAaCAIAAABJiq1sAAAE/UlEQVR4nO2bTYrjMBCFdSeR01jgq2iVewjvcgyDl3OIMXhrGAiEgCGzcCRXWeWf7pZ/uvs9vkVaiZwqSa1nSY56QRAEQRAkqf37av9ucmW1yVUhCIIg6PtrW/etmxYAAAAAAbgvAAAAsDdwXwAAAGBv4L4AAADA3sB9AQAAgL35hu5bPbR6KfVS6qXtv7ppnen/fLpDm9KZ42MA3x2r1SB9TXDNIidXVFnR1k3rjIoLE3HLlFIqd8uFU3W9zG1c/m6QW8Ybx+pEbfWxqGR8215sNVtYXX1X59bm9MP7UNrLMNDsn08k5S9CuvXopGaHnxC/iP8f7D880fspMj2H+1YPbe6rB00nThZWH+98Z4gB/ACsXjSqD1Dai/+XuWV+AnImzES3bNkX10eusmIcv1goccuCiVZX7Wc6Z973B6W9vH2iyLX2SdHXmyBHJeKMn6CLXJH4o8KhI+oiX+kKaRkacwkxqdAypFuPT2pm+L2jWrpLs3p0LyL2fppMT+C+xVP5taxSLzVrw1aTT+oHf4s737BE7mzV1s09G16Hd6fNclydXKHgdUP85h5iKG2nVlYHIIJOH6W9KHXR7H5cLqwbeks+FBL3besi7ycX5r6pF46i0X7oloLGPIQapr8i1ybvX1t9ycym7itHtcDYqHih74UDWe++U0n1rTF06wmS6pkeaUtDfTaFofcTZXoC9222WPveM2a0T9e0dfHsd6p9Q/M/GVL1pq3f28udrXx18u6w81w9dLgzoK/j6huMPPADGE0fn1lRVVftV7TMM7yB0c3n5Nb1dfdlH45vKYpc2z9W5666anP7gClukNeYd7T8k7xwt4BnoDvPy8HESVVXra+0Tc6Q1Hw3LUZY2jwzl6k2SZ7pD3Vf7m3vKv23FE+lXlnROtMNK4YRYvWmrZtxLR7MPVNPxxa+o+Xv7JcC4IncV1inCoX8ljzMERPuS3eeExvwV92Xb/CWw7nazdHFR5H3s+RO8/7StjNjdu0bAh7ugdZfOT2rjx7Yzd97/MSedHhS4kgr7WVx29mZcIcRtQnp/VSZ/ib3be6ZfpS2y+xDk11iaZB9yX1n1rVwX7CGDd1X2HlOv2f4Vffl8bCTRb5z6wpmZtvywVaaawR+KdYXR7C+a8InhccDT5NUnI4zq57Lc2Y49B3HT7NLlOlp3Pe9PXvP1Gtpc2DdzjPZ7w1vOfPUurNVa0036/dy9Tq2T3rfUDz9aa63YaF34b5gmU+6Lz/WEjfKQi06ZYTHmjaKf6qw3/yMv3o0nTkz6b7hOju4bzzJRvHzh3GGJ7TFwtxNX3l7+CEFGTbrkhK79fCk4pD6P+W1qTD8SFOQURenkybTc7jv8Kuh1+xpaP/g0uipK17ot3np9m+4Zmm7vlZpu/ljV6E6+aUTvWaIXKmn1j4q9iiZPwyWqgNAiZcU/nwud+HHD+YmFpIPKxV+RsJ/caSiQ9+0O4QsfiWtk8i0NeG+0aMxJIWsIMfALJet53rhgR15+lZRPGIh7ZdDdmjFqNYn1bcJXfueIClhpA3Brxp+w39Q9HQ3+64UmZ7FfQEAAIDfw/Huyx9Q+l0c3v0AAAAO4Xj3FeCbtIH0Rzu7fREAAABAOKX7AgAAAD8auC8AAACwN3u4LwRBEARBseC+EARBELS34L4QBEEQtLfgvhAEQRC0t+C+EARBELS34L4QBEEQtLe2c9//kBc58IBu4icAAAAASUVORK5CYII=
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'

13980908582 发表于 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' );
我不确定效果咋样哈,给个建议

老俵哥 发表于 2016-9-30 14:06:45

13980908582 发表于 2016-9-29 16:45
你一定要查所有字段么?
如果你的字段可以单纯通过时间筛选,可以考虑根据时间分区啊。。
现在不分区的情 ...

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

页: [1]
查看完整版本: MySQL 利用多线程提升查询性能的一种思路