【问题标题】:Sql Statement Execution Taking a Long Timesql语句执行时间长
【发布时间】:2015-01-31 07:31:15
【问题描述】:

我有一个运行良好的 6 个月以上的 sql 语句,最近它开始花费过多的时间来执行。

DMIRecord 包含 15,950 行,InHouse_CSV_Backup 包含 149,226 行。我在MERSMinMERSNUMBER 各自的表上都设置了索引,并重建了现有索引,但没有帮助。

我有另一个执行相同操作的查询,但 DMIRecord 是一个名为“MERSRecord”的不同源表,包含 28,841 行并且运行良好。此查询在 1 秒内运行并返回 2,048 行

谁能给我一些东西来解决这个问题。上次我运行以下查询时,需要 1 小时 48 分钟才能返回 15,435 行。

我知道加入并不理想,但这是我们必须解决的问题。没有其他东西可以将这些连接到外部导入的数据源。

SELECT m.*
FROM    [MERSReconciliation].[DMIRecord] m
        LEFT JOIN [dbo].[InHouse_CSV_Backup] b ON CAST(LTRIM(RTRIM(m.[MERSMin])) AS VARCHAR(31)) = REPLACE(LTRIM(RTRIM(b.[MERSNUMBER)),
                                                              '-', '')
WHERE ( ( m.[Resolved] IS NULL
            OR m.[Resolved] = 0
          )
          AND ( m.[Ignore Always] IS NULL
                OR m.[Ignore Always] = 0
              )
          AND ( m.[Ignore] IS NULL
                OR m.[Ignore] = 0
              )
          AND ( m.[Processed] IS NULL
                OR m.[Processed] = 0
              )
        )
        AND b.[MERSNUMBER] IS NULL

连接 DMIRecord 的示例数据

100113800001196174
100113800001155030
100113800001204309

加入 InHouse_CSV_Backup 的示例数据

1001138-0000008482-7
NULL
1001138-0000008479-3

以下是好与坏的执行计划

不好:DMIRecords

好:MERSRecord

我在查询中添加了* 以简化发布语句。所有需要的列都在实际语句中定义。

USE [ExtraNet]
GO

/****** Object:  Table [MERSReconciliation].[DMIRecord]    Script Date: 1/29/2015 5:01:35 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [MERSReconciliation].[DMIRecord](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [ClientNo] [varchar](300) NULL,
    [DetailRecordCtlNo] [varchar](300) NULL,
    [ReportingEntityNo] [varchar](300) NULL,
    [OrganizationName] [varchar](300) NULL,
    [MERSOrgId] [varchar](300) NULL,
    [LienPriorityCode] [varchar](300) NULL,
    [RealEstateSecurityCode] [varchar](300) NULL,
    [FHACaseNo] [varchar](300) NULL,
    [InvestLoanNo] [varchar](300) NULL,
    [MERSMin] [varchar](300) NULL,
    [LoanDate] [varchar](300) NULL,
    [OrigMtgAmt] [varchar](300) NULL,
    [EntityTypeQual] [varchar](300) NULL,
    [NameTypeCode] [varchar](300) NULL,
    [MtgrSSNo] [varchar](300) NULL,
    [MtgrLastName] [varchar](300) NULL,
    [MtgrFirstName] [varchar](300) NULL,
    [MtgrMiddleName] [varchar](300) NULL,
    [CoEntityTypeQual1] [varchar](300) NULL,
    [CoNameTypeCode1] [varchar](300) NULL,
    [CoMtgrSSNo1] [varchar](300) NULL,
    [CoborrowerLastName1] [varchar](300) NULL,
    [CoborrowerFirstName1] [varchar](300) NULL,
    [CoborrowerMiddleName1] [varchar](300) NULL,
    [CoEntityTypeQual2] [varchar](300) NULL,
    [CoNameTypeCode2] [varchar](300) NULL,
    [CoMtgrSSNo2] [varchar](300) NULL,
    [CoborrowerLastName2] [varchar](300) NULL,
    [CoborrowerFirstName2] [varchar](300) NULL,
    [CoborrowerMiddleName2] [varchar](300) NULL,
    [CoEntityTypeQual3] [varchar](300) NULL,
    [CoNameTypeCode3] [varchar](300) NULL,
    [CoMtgrSSNo3] [varchar](300) NULL,
    [CoborrowerLastName3] [varchar](300) NULL,
    [CoborrowerFirstName3] [varchar](300) NULL,
    [CoborrowerMiddleName3] [varchar](300) NULL,
    [CoEntityTypeQual4] [varchar](300) NULL,
    [CoNameTypeCode4] [varchar](300) NULL,
    [CoMtgrSSNo4] [varchar](300) NULL,
    [CoborrowerLastName4] [varchar](300) NULL,
    [CoborrowerFirstName4] [varchar](300) NULL,
    [CoborrowerMiddleName4] [varchar](300) NULL,
    [CoEntityTypeQual5] [varchar](300) NULL,
    [CoNameTypeCode5] [varchar](300) NULL,
    [CoMtgrSSNo5] [varchar](300) NULL,
    [CoborrowerLastName5] [varchar](300) NULL,
    [CoborrowerFirstName5] [varchar](300) NULL,
    [CoborrowerMiddleName5] [varchar](300) NULL,
    [CoEntityTypeQual6] [varchar](300) NULL,
    [CoNameTypeCode6] [varchar](300) NULL,
    [CoMtgrSSNo6] [varchar](300) NULL,
    [CoborrowerLastName6] [varchar](300) NULL,
    [CoborrowerFirstName6] [varchar](300) NULL,
    [CoborrowerMiddleName6] [varchar](300) NULL,
    [CoEntityTypeQual7] [varchar](300) NULL,
    [CoNameTypeCode7] [varchar](300) NULL,
    [CoMtgrSSNo7] [varchar](300) NULL,
    [CoborrowerLastName7] [varchar](300) NULL,
    [CoborrowerFirstName7] [varchar](300) NULL,
    [CoborrowerMiddleName7] [varchar](300) NULL,
    [CoEntityTypeQual8] [varchar](300) NULL,
    [CoNameTypeCode8] [varchar](300) NULL,
    [CoMtgrSSNo8] [varchar](300) NULL,
    [CoborrowerLastName8] [varchar](300) NULL,
    [CoborrowerFirstName8] [varchar](300) NULL,
    [CoborrowerMiddleName8] [varchar](300) NULL,
    [CoEntityTypeQual9] [varchar](300) NULL,
    [CoNameTypeCode9] [varchar](300) NULL,
    [CoMtgrSSNo9] [varchar](300) NULL,
    [CoborrowerLastName9] [varchar](300) NULL,
    [CoborrowerFirstName9] [varchar](300) NULL,
    [CoborrowerMiddleName9] [varchar](300) NULL,
    [CoEntityTypeQual10] [varchar](300) NULL,
    [CoNameTypeCode10] [varchar](300) NULL,
    [CoMtgrSSNo10] [varchar](300) NULL,
    [CoborrowerLastName10] [varchar](300) NULL,
    [CoborrowerFirstName10] [varchar](300) NULL,
    [CoborrowerMiddleName10] [varchar](300) NULL,
    [NuStreetNo] [varchar](300) NULL,
    [NuStreetName] [varchar](300) NULL,
    [NuStreetDir] [varchar](300) NULL,
    [NuCityName] [varchar](300) NULL,
    [NuStateAbbr] [varchar](300) NULL,
    [NuPropZip] [varchar](300) NULL,
    [NuPropSuffix] [varchar](300) NULL,
    [NuPropUnitNo] [varchar](300) NULL,
    [County] [varchar](300) NULL,
    [MERsMOMflag] [varchar](300) NULL,
    [PoolNo] [varchar](300) NULL,
    [MERsFundingDate] [varchar](300) NULL,
    [MERsOrigOrgId] [varchar](300) NULL,
    [OrigNoteHldNm] [varchar](300) NULL,
    [MinStatCd] [varchar](300) NULL,
    [MERsPropertyPresOrgId] [varchar](300) NULL,
    [InvMERsOrgId] [varchar](300) NULL,
    [SecuritizationName] [varchar](300) NULL,
    [PropertyUnitType] [varchar](300) NULL,
    [DateAssignFrMERs] [varchar](300) NULL,
    [MERsStatusReasonCode] [varchar](300) NULL,
    [OccupancyStatus] [varchar](300) NULL,
    [AgencyNbr] [varchar](300) NULL,
    [SubservicingMERsOrgId] [varchar](300) NULL,
    [Assignee] [varchar](300) NULL,
    [AssigneeAddressInfo] [varchar](300) NULL,
    [AssigneeCity] [varchar](300) NULL,
    [AssigneeState] [varchar](300) NULL,
    [AssigneeZipCode] [varchar](300) NULL,
    [Assignor] [varchar](300) NULL,
    [Resolved] [bit] NULL,
    [Ignore Always] [bit] NULL,
    [Ignore] [bit] NULL,
    [Processed] [bit] NULL,
    [ImportedDate] [datetime] NULL,
    [ImportedBy] [varchar](50) NULL,
    [UpdatedDate] [datetime] NULL,
    [UpdatedBy] [varchar](50) NULL,
    [F2FResolved] [bit] NULL,
    [F2FIgnore Always] [bit] NULL,
    [F2FIgnore] [bit] NULL,
    [F2FProcessed] [bit] NULL,
    [Comment] [varchar](max) NULL,
    [F2FComment] [varchar](max) NULL,
 CONSTRAINT [PK_DMIRecord] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

USE [ExtraNet]
GO

    /****** Object:  Table [dbo].[InHouse_CSV_Backup]    Script Date: 1/29/2015 5:01:11 PM ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    SET ANSI_PADDING ON
    GO

    CREATE TABLE [dbo].[InHouse_CSV_Backup](
        [Loan_ID] [int] IDENTITY(1,1) NOT NULL,
        [LOANNUMBER] [float] NULL,
        [LOANNUMBE1] [float] NULL,
        [MERSNUMBER] [nvarchar](31) NULL,
        [LEADID] [float] NULL,
        [CALCDATELE] [datetime] NULL,
        [PBFIRSTNAM] [nvarchar](26) NULL,
        [PBLASTNAME] [nvarchar](36) NULL,
        [PBSOCIALSE] [nvarchar](51) NULL,
        [PCFIRSTNAM] [nvarchar](26) NULL,
        [PCLASTNAME] [nvarchar](36) NULL,
        [PBVOICE] [nvarchar](13) NULL,
        [PBWORKNUMB] [nvarchar](13) NULL,
        [LOANSTATUS] [nvarchar](21) NULL,
        [StatusDate] [nvarchar](50) NULL,
        [StatusDays] [float] NULL,
        [PBCREDITSC] [float] NULL,
        [PCCREDITSC] [float] NULL,
        [BDETOTAL11] [float] NULL,
        [BDETOTAL21] [float] NULL,
        [BDETOTAL10] [float] NULL,
        [LTV] [float] NULL,
        [COMBINEDLT] [float] NULL,
        [HOUSINGRAT] [float] NULL,
        [DEBTRATIO] [float] NULL,
        [PBAGE] [float] NULL,
        [PCAGE] [float] NULL,
        [BDEYEARSAT] [float] NULL,
        [BDEYEARSA1] [float] NULL,
        [INVESTOR] [nvarchar](51) NULL,
        [PRODUCTCOD] [nvarchar](21) NULL,
        [PROGRAMNAM] [nvarchar](51) NULL,
        [PROGRAMCAT] [nvarchar](16) NULL,
        [LOANPURPOS] [nvarchar](26) NULL,
        [DOCUMENTAT] [nvarchar](21) NULL,
        [SPPURPOSEO] [nvarchar](51) NULL,
        [LIENPOSITI] [nvarchar](16) NULL,
        [FUNDINGTYP] [nvarchar](16) NULL,
        [SPOCCUPANC] [nvarchar](26) NULL,
        [LOANTYPE] [nvarchar](16) NULL,
        [SPPROPERTY] [nvarchar](26) NULL,
        [RATE] [float] NULL,
        [LOANTERM] [float] NULL,
        [LOANAMOUNT] [float] NULL,
        [LBRANCHNUM] [nvarchar](11) NULL,
        [LOEMPLOYEE] [nvarchar](16) NULL,
        [LOFIRSTNAM] [nvarchar](26) NULL,
        [LOLASTNAME] [nvarchar](36) NULL,
        [LPFIRSTNAM] [nvarchar](26) NULL,
        [LPLASTNAME] [nvarchar](36) NULL,
        [LUFIRSTNAM] [nvarchar](26) NULL,
        [LULASTNAME] [nvarchar](36) NULL,
        [LEADSOURCE] [nvarchar](31) NULL,
        [REFERRALSO] [nvarchar](51) NULL,
        [BROKERCOMP] [float] NULL,
        [BRCOMPANYN] [nvarchar](51) NULL,
        [SELLERREAL] [float] NULL,
        [SACOMPANYN] [nvarchar](51) NULL,
        [SellerAgenPhone] [nvarchar](50) NULL,
        [SABRANCHNA] [nvarchar](26) NULL,
        [SAFIRSTNAM] [nvarchar](26) NULL,
        [SALASTNAME] [nvarchar](36) NULL,
        [ADDRESS] [nvarchar](36) NULL,
        [SPCITY] [nvarchar](26) NULL,
        [SPSTATE] [nvarchar](3) NULL,
        [SPZIP] [nvarchar](11) NULL,
        [SPCOUNTY] [nvarchar](21) NULL,
        [PBPAADDRES] [nvarchar](36) NULL,
        [PBPACITY] [nvarchar](26) NULL,
        [PBPASTATE] [nvarchar](3) NULL,
        [PBPAZIP] [nvarchar](11) NULL,
        [CALCDATEPR] [datetime] NULL,
        [CALCDATENO] [datetime] NULL,
        [CALCDATEON] [datetime] NULL,
        [CALCDATEP1] [datetime] NULL,
        [CALCDATEAP] [datetime] NULL,
        [CALCDATEP2] [datetime] NULL,
        [CALCDATESU] [datetime] NULL,
        [CALCDATEA1] [datetime] NULL,
        [CALCDATEA2] [datetime] NULL,
        [CALCDATEA3] [datetime] NULL,
        [CLoanFunded] [datetime] NULL,
        [AppraisalReceived] [datetime] NULL,
        [CALCDATEES] [datetime] NULL,
        [SHIPPED] [datetime] NULL,
        [FIRSTPAYME] [datetime] NULL,
        [LOCKDATE] [datetime] NULL,
        [LOCKEXPIRE] [datetime] NULL,
        [CALCDATEDO] [datetime] NULL,
        [CALCDATED1] [datetime] NULL,
        [CALCDATED2] [datetime] NULL,
        [CALCDATEIN] [datetime] NULL,
        [CALCDATEFU] [datetime] NULL,
        [CLOSEDATE] [datetime] NULL,
        [CANCELDATE] [datetime] NULL,
        [CALCDATERE] [datetime] NULL,
        [CALCDATEI1] [datetime] NULL,
        [MONTHLYLOA] [float] NULL,
        [TOTALMONTH] [float] NULL,
        [ProductID] [float] NULL,
        [CPI] [char](10) NULL,
        [BrokeredOut] [datetime] NULL,
        [Commitment] [varchar](25) NULL,
        [Pool] [varchar](25) NULL,
        [Points801] [float] NULL,
        [Points802] [float] NULL,
        [ConfirmedPrice] [float] NULL,
        [InvPrice] [float] NULL,
        [InvLockDate] [datetime] NULL,
        [Units] [float] NULL,
        [InvID] [float] NULL,
        [Committed_Product] [varchar](50) NULL,
        [FloodZone] [char](10) NULL,
        [ModBack] [datetime] NULL,
        [CommSplitID] [char](10) NULL,
        [CommissionSplit] [varchar](50) NULL,
        [PropertyClass] [varchar](25) NULL,
        [PUDType] [varchar](50) NULL,
        [InvBase] [float] NULL,
        [LockConfBase] [float] NULL,
        [DeedReceivedDate] [datetime] NULL,
        [TitleReceivedDate] [datetime] NULL,
        [InvestorClearedDate] [datetime] NULL,
        [InvestorDeniedDate] [datetime] NULL,
        [InvestorSuspendedDate] [datetime] NULL,
        [FHACaseNum] [varchar](50) NULL,
        [DeniedDate] [datetime] NULL,
        [LockCancelled] [datetime] NULL,
        [UWRecievedDate] [datetime] NULL,
        [UWSuspended] [datetime] NULL,
        [ForwardCancelled] [datetime] NULL,
        [LeadB2B] [datetime] NULL,
        [ServicingBegin] [datetime] NULL,
        [ServicingEnd] [datetime] NULL,
        [MICertNum] [varchar](50) NULL,
        [WareHouseLine] [varchar](50) NULL,
        [FirstCreditScoreDate] [datetime] NULL,
        [DuplicateFlag] [varchar](50) NULL,
        [MinCreditScore] [nchar](10) NULL,
        [NMLS_ID] [nchar](10) NULL,
        [PQ_ApprovedDate] [datetime] NULL,
        [CompletedDate] [datetime] NULL,
        [PQ_DeniedDate] [datetime] NULL,
        [PQ_WithdrawnDate] [datetime] NULL,
        [LeadInactiveDate] [datetime] NULL,
        [LoanOriginatedDate] [datetime] NULL,
        [IncometeAppDate] [datetime] NULL,
        [HOEPAStatus] [nchar](10) NULL,
        [FinanceMethod] [varchar](50) NULL,
        [IOMonths] [nchar](10) NULL,
        [MI_Type] [varchar](50) NULL,
        [MI_Activated] [varchar](50) NULL,
        [MI_ExpireDate] [datetime] NULL,
        [Fee902] [money] NULL,
        [Fee1002] [money] NULL,
        [HOEPA] [nchar](10) NULL,
        [RequiredCreditScore] [nchar](10) NULL,
        [ApprovedWithdrawn] [datetime] NULL,
        [Withdrawn] [datetime] NULL,
        [BranchDenied] [datetime] NULL,
        [PQSubmitted] [datetime] NULL,
        [Prepay] [nchar](10) NULL,
        [CountyCD] [varchar](3) NULL,
        [StateCD] [varchar](2) NULL,
        [IsTestLoan] [bit] NULL,
        [ReqClose_Dt] [date] NULL,
        [LockReneg_Dt] [date] NULL,
        [PTD_Cond_Count] [int] NULL,
        [AdminFee] [varchar](3) NULL,
        [PricingTier] [varchar](12) NULL,
        [Borr_MidName] [nvarchar](36) NULL,
        [CoBorr2_FirstName] [nvarchar](26) NULL,
        [CoBorr2_MidName] [nvarchar](36) NULL,
        [CoBorr2_LastName] [nvarchar](36) NULL,
        [CoBorr2_SSN] [varchar](15) NULL,
        [CoBorr2_Address] [nvarchar](36) NULL,
        [CoBorr2_City] [nvarchar](26) NULL,
        [CoBorr2_State] [varchar](2) NULL,
        [CoBorr2_ZIP] [varchar](10) NULL,
        [CoBorr2_CredScore] [int] NULL,
        [CoBorr3_FirstName] [nvarchar](26) NULL,
        [CoBorr3_MidName] [nvarchar](36) NULL,
        [CoBorr3_LastName] [nvarchar](36) NULL,
        [CoBorr3_SSN] [varchar](15) NULL,
        [CoBorr3_Address] [nvarchar](36) NULL,
        [CoBorr3_City] [nvarchar](26) NULL,
        [CoBorr3_State] [varchar](2) NULL,
        [CoBorr3_ZIP] [varchar](10) NULL,
        [CoBorr3_CredScore] [int] NULL,
        [Created_Dt] [datetime] NULL CONSTRAINT [DF_InHouse_CSV_Backup_Created_Dt]  DEFAULT (getdate()),
        [LastUpdated_Dt] [datetime] NULL,
        [IntentProceed_Dt] [date] NULL,
        [ClearClose_Dt] [date] NULL,
        [SellerRealtor_ID] [int] NULL,
        [BuyerRealtor_ID] [int] NULL,
     CONSTRAINT [PK_InHouse_CSV_Backup] PRIMARY KEY NONCLUSTERED 
    (
        [Loan_ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF
    GO

我运行了调优顾问,但没有提出任何改进建议。

有趣的事情要注意。我回到之前托管这些语句的原始 SQL 2008 服务器,两条语句都在 3 秒内执行。两个执行计划是相同的。在 SQL 2012 Server 上,只有 MERSRecord 查询的执行计划是相同的。所有三个都与上面列出的匹配。只有 SQL 2012 服务器上的 DMIRecords 不同。可能的错误?

2012 年 1 月 30 日 更新显示我在dba.stackexchange.com上的问题的解决方案
将 OPTION (HASH JOIN) 添加到强制哈希连接的语句末尾。添加这会导致问题查询在 1 秒内执行并返回正确的结果集。

【问题讨论】:

  • 问题在于您的non-sargable join 条件。您能否提供一些示例数据和预期结果?
  • 可能值得比较好查询和坏查询的实际执行计划并寻找差异。如果您不理解它所说的内容,请不要担心,如果您能找到可能帮助某人帮助您的不同之处:)
  • 您能否在您的数据库中提供示例行。也许我们可以帮助提高您的查询。
  • 张贴执行计划的屏幕截图可能不会对您造成伤害。
  • 请同时发布 TableATableB 的架构。

标签: sql-server tsql


【解决方案1】:

使用CTE 清理您的数据。在JOIN 条件下使用函数会阻止索引的使用。

;WITH CteTableA AS(
    SELECT      
        TrimmedCol1 = CAST(LTRIM(RTRIM(m.[COL1])) AS VARCHAR(31)),
        Resolved = ISNULL(Resolved, 0),
        [Ignore Always] = ISNULL([Ignore Always], 0),
        Ignore = ISNULL(Ignore, 0),
        Processed = ISNULL(Processed, 0)        
    FROM TableA
)
,CteTableB AS(
    SELECT
        *,
        TrimmedCol3 = REPLACE(LTRIM(RTRIM(b.[COL3])),'-', '')
    FROM TableB
)
SELECT
    a.*
FROM CteTableA a
LEFT JOIN CteTableB b
    ON b.TrimmedCol3 = a.TrimmedCol1
WHERE
    a.Resolved = 0
    AND a.[Ignore Always] = 0
    AND a.Ignore = 0
    AND a.Processed = 0
    AND b.ACCOUNTNUMBER IS NULL

编辑:

尝试清理数据并将其插入临时表中。然后添加必要的索引。

CREATE TABLE #TempTableA(
    TrimmedCol1     VARCHAR(31),
    Resolved        BIT,
    [Ignore Always] BIT,
    Ignore          BIT,
    Processed       BIT
    -- Other columns you might need
)
CREATE TABLE #TempTableB(
    TrimmedCol3 VARCHAR(31),
    MERSNUMBER  NVARCHAR(31) NULL
    -- Other columns you might need
)
INSERT INTO #TempTableA
    SELECT      
        TrimmedCol1 = CAST(LTRIM(RTRIM(m.[COL1])) AS VARCHAR(31)),
        Resolved = ISNULL(Resolved, 0),
        [Ignore Always] = ISNULL([Ignore Always], 0),
        Ignore = ISNULL(Ignore, 0),
        Processed = ISNULL(Processed, 0)        
    FROM TableA

INSERT INTO #TempTableB
    SELECT
        TrimmedCol3 = REPLACE(LTRIM(RTRIM(b.[COL3])),'-', ''),
        MERSNUMBER
    FROM TableB

CREATE NONCLUSTERED INDEX #IX_TempTableA ON #TempTableA (TrimmedCol1)
CREATE NONCLUSTERED INDEX #IX_TempTableB ON #TempTableB (TrimmedCol3)

SELECT
    a.*
FROM #TempTableA a
LEFT JOIN #TempTableB b
    ON b.TrimmedCol3 = a.TrimmedCol1
WHERE
    a.Resolved = 0
    AND a.[Ignore Always] = 0
    AND a.Ignore = 0
    AND a.Processed = 0
    AND b.MERSNUMBER IS NULL

【讨论】:

  • 执行 12 分钟后仍然没有返回任何结果。看起来并不乐观。
  • 谢谢 wewethemenace 我会试一试的。我目前正在从 C# Win 应用程序中的内联 sql 执行此操作,但如果它有效,我将解决此问题。但奇怪的是。数据库最近从 SQL08 移动到 SQL12 框。我回到 08 框并运行 sql,它工作得很好。执行计划甚至看起来像 OP 中的良好执行计划。该语句在 2 秒内完成了 8 行。 TableA 有 15,950 行,TableB 有 146,717 行,所以数据没有太大区别。想法?
  • 什么查询?你的原版?我不是这方面的专家,但您是否尝试过重建索引和更新统计信息?另外,检查配置和set options。也许他们不一样。
  • Yes' 原始查询。我昨天重建了两个表上的所有索引,但似乎没有帮助。你能详细说明一下我不熟悉的“检查配置和设置选项”吗?
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多