0

最近我们在测试服务器中将 MySQL 从 5.0 升级到了 5.6。但是我们的实时服务器仍然是 MySQL 5.0 版本。

当我在 MySQL 5.6 中运行以下查询时,它显示 141000 条记录,但是当我在 MySQL 5.0 上运行它时,它只获取 91 条记录。

在 MySQL 5.6(141000 条记录)中检索不到 3 分钟,在 MySQL 5.0(91 条记录)中检索需要 29 分钟。

我不知道是什么问题。没有抛出任何错误。

在 Live 服务器中,升级到 5.6 需要一些时间。我们将尽快升级。但是,我必须解决这个问题才能上线。

SELECT * FROM(SELECT IFNULL(clmem.accountid,opmem.accountid) accountid,clmem.clmem,opmem.opmem,IFNULL(clmem.valuationdate,opmem.valuationdate) valuationdate FROM
        (
            select accountid, valuationdate, clmem,@rownumber:=(CASE WHEN @accid= accountid THEN @rownumber+1 ELSE 1 END) AS rownumber,@accid:=accountid AS acc from 
            (SELECT accountid,valuationdate,SUM(mem) clmem FROM testtempmem GROUP BY accountid,valuationdate ) A
        ) clmem RIGHT JOIN
        (
            select accountid, valuationdate, opmem,@rownumber:=(CASE WHEN @accid= accountid THEN @rownumber+1 ELSE 1 END) AS rownumber,@accid:=accountid AS acc from 
            (SELECT accountid,valuationdate,SUM(mem) opmem FROM testtempmem GROUP BY accountid,valuationdate ) A
        ) opmem ON clmem.rownumber = opmem.rownumber+1 AND clmem.accountid = opmem.accountid
        WHERE clmem.accountid IS NOT NULL
        UNION 
        SELECT t.accountid, sum(t.mem) as clmem,0 as opmem, t.valuationdate  FROM testtempmem t 
            join (SELECT accountid,MIN(valuationdate) valuationdate FROM testtempmem GROUP BY accountid ) A 
            on t.accountid = a.accountid and t.valuationdate = a.valuationdate
            WHERE t.valuationdate > '2015-04-01' group by t.accountid, t.valuationdate 
    ) a ;
4

0 回答 0