繁体   English   中英

SQl查询从不同表获取数据的速度非常慢

[英]SQl Query get data very slow from different tables

我正在编写一个sql查询以从不同表中获取数据,但它从不同表中获取数据的速度非常慢。 大约需要2分钟以上才能完成。 我在这里做什么:1.我正在获取数据差异,并且代表日期差异,我获取帐号。2.我正在比较表格以获取我需要的确切数据。

这是我的查询

select T.accountno,
       MAX(T.datetxn) as MxDt,
       datediff(MM,MAX(T.datetxn), '2011-6-30') as Diffs, 
       max(P.Name) as POName 
from   Account_skd A,
       AccountTxn_skd T,
       POName P 
where  A.AccountNo = T.AccountNo and 
       GPOCode = A.OfficeCode and 
       Code = A.POCode and 
       A.servicecode = T.ServiceCode
group by T.AccountNo 
order by len(T.AccountNo) DESC

请帮助我如何使用联接或任何其他方式在非常短的时间内(例如5-10秒)内获取数据。

由于似乎您获得了每个帐户,并且性能很慢,因此,我将尝试通过仅帐户创建一个预查询,然后对诸如此类的其他联接表进行单个联接。

select 
      T.Accountno,
      T.MxDt,
      datediff(MM, T.MxDt, '2011-6-30') as Diffs, 
      P.Name as POName 
   from   
         ( select T1.AccountNo,
                  Max( T1.DateTxn ) MxDt
              from AccontTxn_skd T1
              group by T1.AccountNo ) T
         JOIN Account_skd A
            on T.AccountNo = A.AccountNo
            JOIN POName P
               on A.POCode = P.Code         <-- GUESSING as you didn't qualify alias.field 
              AND A.OfficeCode = P.GPOCode  <-- in your query for these two fields
   order by 
      len(T.AccountNo) DESC

您还有其他基于T.ServiceCode匹配的元素,但是由于您只是按帐号分组,因此使用哪个服务代码有关系吗? 否则,您将需要按帐户和服务代码进行分组(我会将服务代码添加到预查询中,并且也作为加入条件添加到帐户表中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM