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

时间:2015-06-11 11:54:56

标签: mysql version incompatibility mysql-5.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 ;

0 个答案:

没有答案