首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQl查询从不同的表中获取数据的速度非常慢

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

Stack Overflow用户
提问于 2013-12-04 20:06:25
回答 1查看 209关注 0票数 0

我正在编写一个sql查询来从不同的表中获取数据,但是它从不同的表中获取数据的速度非常慢。大约超过2分钟即可完成。我在这里做的是: 1.我得到了数据差异,代表日期差异,我得到了账号2.我正在比较表格,以获得我需要的确切数据。

下面是我的问题

代码语言:javascript
复制
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秒。

EN

回答 1

Stack Overflow用户

发布于 2013-12-04 20:42:04

由于您似乎获得了每个帐户,并且性能很慢,因此我将尝试通过只按帐户创建预查询,然后对其他连接表执行一次连接,例如..

代码语言:javascript
复制
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匹配的元素,但是既然您只是根据帐号进行分组,那么使用哪个服务代码有关系吗?否则,您需要同时按帐户和服务代码进行分组(我会将服务代码添加到预查询中,并将其作为连接条件添加到account表中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20374937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档