如题
我执行一段查询语句,用5.6的时候用时6s多,用5.7用时4分钟,将5.7安装在ssd分区上的话,时间有很大提升,查询用时30秒左右。
服务器是同一台,内存64G,数据30万,时间上怎么会差这么多?
有没有哪位大神了解这方面的知识,麻烦解惑一下5.7的性能瓶颈是在哪里。附上sql:
SELECT
count(1)
FROM
(
SELECT
a.id AS ruleId,
a.name AS ruleName,
a.score,
a.rNumber,
b.realRNumber
FROM
(
SELECT
r.id,
r.name,
r.score,
count(r.id) AS rNumber
FROM
c
LEFT JOIN r ON r.ID = c.ID
WHERE
r.id IS NOT NULL
AND c.c_time >= STR_TO_DATE(
'2016-08-17 00:00:00',
'%Y-%m-%d %H:%i:%s'
)
AND c.c_time <= (
STR_TO_DATE(
'2016-08-17
23:59:59',
'%Y-%m-%d %H:%i:%s'
)
)
GROUP BY
r.id,
r.name,
r.score
) a
LEFT JOIN (
SELECT
count(r.id) AS rNumber,
r.id,
r.name,
r.score
FROM
c
LEFT JOIN r ON r.ID = c.ID
WHERE
r.id IS NOT NULL
AND c.c_time >= STR_TO_DATE(
'2016-08-17
00:00:00',
'%Y-%m-%d %H:%i:%s'
)
AND c.c_time <= (
STR_TO_DATE(
'2016-08-17 23:59:59',
'%Y-%m-%d
%H:%i:%s'
)
)
AND c.R_TIVE = '1'
GROUP BY
r.id,
r.name,
r.score
) b ON a.id = b.id
AND a.name = b.name
AND a.score = b.score
) a
我执行一段查询语句,用5.6的时候用时6s多,用5.7用时4分钟,将5.7安装在ssd分区上的话,时间有很大提升,查询用时30秒左右。
服务器是同一台,内存64G,数据30万,时间上怎么会差这么多?
有没有哪位大神了解这方面的知识,麻烦解惑一下5.7的性能瓶颈是在哪里。附上sql:
SELECT
count(1)
FROM
(
SELECT
a.id AS ruleId,
a.name AS ruleName,
a.score,
a.rNumber,
b.realRNumber
FROM
(
SELECT
r.id,
r.name,
r.score,
count(r.id) AS rNumber
FROM
c
LEFT JOIN r ON r.ID = c.ID
WHERE
r.id IS NOT NULL
AND c.c_time >= STR_TO_DATE(
'2016-08-17 00:00:00',
'%Y-%m-%d %H:%i:%s'
)
AND c.c_time <= (
STR_TO_DATE(
'2016-08-17
23:59:59',
'%Y-%m-%d %H:%i:%s'
)
)
GROUP BY
r.id,
r.name,
r.score
) a
LEFT JOIN (
SELECT
count(r.id) AS rNumber,
r.id,
r.name,
r.score
FROM
c
LEFT JOIN r ON r.ID = c.ID
WHERE
r.id IS NOT NULL
AND c.c_time >= STR_TO_DATE(
'2016-08-17
00:00:00',
'%Y-%m-%d %H:%i:%s'
)
AND c.c_time <= (
STR_TO_DATE(
'2016-08-17 23:59:59',
'%Y-%m-%d
%H:%i:%s'
)
)
AND c.R_TIVE = '1'
GROUP BY
r.id,
r.name,
r.score
) b ON a.id = b.id
AND a.name = b.name
AND a.score = b.score
) a
解决方案 »
- Ubuntu10.04 编译安装mysql-6.0.0-alpha 源代码问题?
- 无法启动mysql服务
- 求教简单sql查询动态表名
- mysql中突然出现如下错误是什么原因呢?
- MySql为什么会这样?
- 求一MySql管理工具
- 紧急求助:mysql插入大篇幅文章调用显示出来只是前面的一小部分,怎么办?
- windows xp 启动mysql出错,急 急 急
- ***在linux下,怎样向postgreSQL数据库中插入一个二进制文件呀?!***
- mysql每20分钟的数据进行一次group_concat()的疑问?
- mysql 加了orderby 查询速度超级慢怎么办
- mysql远程连接不上是什么问题?
直接查数量
用这个 SELECT
DISTINCT(r.id,r.name,r.score) AS cnt
FROM
c
JOIN r ON r.ID = c.ID
WHERE
AND c.c_time >= STR_TO_DATE('2016-08-17 00:00:00','%Y-%m-%d %H:%i:%s')
AND c.c_time <= STR_TO_DATE('2016-08-17 23:59:59','%Y-%m-%d %H:%i:%s')
还有一点,新出的版本最好先别用,因为可能会有不少bug,等出来稳定版后再用,坑不少
5.6和5.7的差异不好说,但是既然一个快,一个慢,肯定是在优化器方面 有改进,但是改进的具体方面,你可以参考一下mysql的官方文档,但是官方文档也只是说明了可能的差异,具体如何解决这种差异,你还是得自己分析执行计划。