开发者社区> 问答> 正文

为什么SQL Server联接执行所需的时间太长?

我正在用数据填充临时表,以下是我的临时表的定义。

DECLARE @PurgeFilesList TABLE
(
    JobFileID BIGINT,
    ClientID INT,
    StatusID INT,
    IsPurgeSuccessfully BIT,
    ReceivedDate DATETIME,
    FilePath VARCHAR(2000),
    StatementPath VARCHAR(2000)
)

插入逻辑以填充临时表,此后,我将使用名为Account:

SELECT 
    JobFileID,
    PFL.ClientID,
    StatusID,
    IsPurgeSuccessfully,
    ReceivedDate,
    CASE 
       WHEN FilePath IS NULL THEN StatementPath 
       ELSE FilePath 
    END 'FilePath'
FROM 
    @PurgeFilesList PFL
INNER JOIN 
    Account(NOLOCK) A ON ISNULL(PFL.ClientID, 0) = ISNULL(A.ClientID, 0) 
                      AND A.HoldStatementPurge = 0

但是,这种连接需要太多时间。尽管“帐户”表中的总行数少于5000。

Account 表架构:

Column_name         Type    Computed    Length
-----------------------------------------------
AccountID           bigint      no        8
AccountNumber       varchar     no        32
PrimaryCustomerName varchar     no        100
LastName            varchar     no        100
ClientName          varchar     no        32
BankID              varchar     no        32
UpdatedDate         datetime    no        8
IsPurged            bit         no        1
PurgeDate           datetime    no        8
ClientID            int         no        4
HoldStatementPurge  bit         no        1

请告知我是否需要其他信息。

展开
收起
祖安文状元 2020-01-03 16:12:49 489 0
1 条回答
写回答
取消 提交回答
  • 由于您没有使用任何列,Account因此我将使用EXISTS:

    > select fl.JobFileID, fl.ClientID, fl.StatusID, 
           fl.IsPurgeSuccessfully, fl.ReceivedDate, 
           isnull(FilePath, StatementPath) as FilePath
    from @PurgeFilesList fl
    where fl.ClientID is null or
          exists (select 1 
                  from Account a 
                  where a.clientid = fl.clientid and a.HoldStatementPurge = 0
                 );
    为```  
    了提高性能,索引对Account(clientid,HoldStatementPurge)表变量具有相同的帮助。只要确保您的表变量中的数据量较小即可,那么您将需要使用临时表并在该表上提供适当的索引。
    2020-01-03 16:13:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载