优化查询,该查询将得出两个差异数据表中的重复项

时间:2019-06-03 15:55:44

标签: sql sql-server tsql union

select 
       A.SlNo 
      ,A.[Company Code]
      ,A.[Document Number]
      ,A.[Document Type]
      ,CONVERT(varchar(10),A.[Document Date],101) AS [Document Date]
      ,A.[Reference]
      ,CAST(Null as nvarchar(5)) As NumericInvoice
      ,CONVERT(varchar(10),A.[Posting Date],101) AS [Posting Date]
      ,A.[Clearing Document]
      ,A.[Amount in doc# curr#]`enter code here`
      ,A.[Document currency]
      ,A.[Account]
      ,A.[Account Description]
      ,A.[User Name]
      ,A.dumptype
      ,CAST(Null As Varchar(5)) As Similarity
      ,CASE
       When (A.[Reference] = B.[Reference] and A.[Amount in doc# curr#]= B.[Amount in doc# curr#]) then 'DUPEPAYA'
       END  As [Status]
      ,CAST(Null As Varchar(5)) As [DupeSets]
 from MasterData A
 Join  InputData B  on (A.[Reference] = B.[Reference] and A.[Amount in doc# curr#]= B.[Amount in doc# curr#])


Union All 

select distinct
       A.SlNo 
      ,A.[Company Code]
      ,A.[Document Number]
      ,A.[Document Type]
      ,CONVERT(varchar(10),A.[Document Date],101) AS [Document Date]
      ,A.[Reference]
      ,CAST(Null as nvarchar(5)) As NumericInvoice
      ,CONVERT(varchar(10),A.[Posting Date],101) AS [Posting Date]
      ,A.[Clearing Document]
      ,A.[Amount in doc# curr#]
      ,A.[Document currency]
      ,A.[Account]
      ,A.[Account Description]
      ,A.[User Name]
      ,A.dumptype
      ,CAST(Null As Varchar(5)) As Similarity
      ,CASE
       When (A.[Reference] = B.[Reference] and A.[Amount in doc# curr#]= B.[Amount in doc# curr#]) then 'DUPEPAYA'
       END  As [Status]
      ,DENSE_Rank () Over (order by A.[Reference], A.[Account Description], A.dumptype asc) As [DupeSets]
from InputData A
Join  MasterData B  on (A.[Reference] = B.[Reference] and A.[Amount in doc# curr#]= B.[Amount in doc# curr#])

order by A.[Reference], A.[Account Description], A.dumptype asc

我想优化上面的查询,导致几次验证后从masterdata表复制到输入数据表的重复数据,这些数据表处理大量数据,因此执行查询需要很长时间。请帮忙 注意:我是SQL的初学者。

0 个答案:

没有答案