[英]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.