mysql sequence 5.7_MySQL - 将5.5.27升级到5.7的性能问题

我正在研究一个Query,它检索服务报告列表及其详细信息 . 该查询还通过在详细信息列中添加“ - ”来返回数据库中缺少的服务报告 . 花了一些时间后,我想出了这样的查询: -

select

22000+n as sSrn ,IFNULL(m.mType,'---') machineType, ifnull(c.custName,'---') as customerName, IFNULL(sDos,'---') DateOfService , IFNULL(sSrgd,'---') AS ServiceRptDate ,IFNULL(sTechnician,'---') AS technician ,IFNULL( CAST(sPcdescription AS char(100)) ,'---') AS remarks , IFNULL( CAST(m.machineID AS char(100)) ,'---') AS machineID

from

(

SELECT @curRow := @curRow + 1 AS n

FROM service CROSS JOIN dummytable

JOIN (SELECT @curRow := 0) r

) numbergen

LEFT JOIN service s ON sSrn = 22000+n

LEFT JOIN machine m ON s.machineID = m.machineID

LEFT JOIN customer c ON c.custID = m.custID

LIMIT 0,10

该查询实际上生成一个包含大量行的表,并将其与服务表数据进行比较 . 如果服务号不是连续的,它将生成缺少的报告号,并带有' - '作为其他列 . 完成理想的结果,就像这样 .

baf88ac1-5350-4e3e-8088-51ee9ab2d961.png

但问题是,当我将MySQL版本升级到5.7时,查询执行速度非常慢,而5.5.27(5.5.27也提供了平均性能但仍然可用 . ))例如:

**seconds elapsed for 5.5.27 MySQL : 1.48 SEC ** seconds elapsed for 5.7 MySQL : 14.960 SEC

0d7b2dd1-4fca-4cc4-bf58-6c50ba79887b.png

请告知如何提高MySQL 5.7或SQL中的查询性能 .

注意:我也理解基于第一列的自动排序在5.7上没有工作,这导致我在查询中输入一个订单,这导致更多的延迟 .

UPDATE : EXPLAIN for 5.5.27 version

51b73b86-ca1c-40e1-9aeb-c58b34953e8b.png

EXPLAIN for 5.7版

1d10fd42-0dd6-494f-9908-5ba560eacdbc.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值