考慮下面的SQL查詢一種更好的方式來處理下面的SQL查詢過濾條件
INSERT INTO [dbo].[PartnerCommissionData]
SELECT X.*
FROM
(
SELECT
cs.partner_id
,cs.quarter
,cs.year
,cs.partner_currency_amount
,p.partner_email
,cs.report_status_id
,Creation_dt = GETDATE()
FROM [dbo].[CommissionSummary] cs WITH(NOLOCK)
INNER JOIN [dbo].[Partner] p WITH(NOLOCK) ON p.partner_id = cs.partner_id
WHERE
cs.year = YEAR(@FirstDayOfQuarter)
AND cs.quarter = @Quarter
AND cs.report_status_id IN (1,2)
)X
WHERE
X.partner_id NOT IN (SELECT [Partner_Id] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
AND X.quarter NOT IN (SELECT [Quarter] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
AND X.year NOT IN (SELECT [Year] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
AND X.report_status_id NOT IN (SELECT [CommissionStatus_id] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
指定過濾條件表明,如果已經存在於PartnerCommissionData表中的記錄,那麼它不應該被進一步插入。但按照我的看法,這是一種惡劣的實施。
WHERE
X.partner_id NOT IN (SELECT [Partner_Id] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
AND X.quarter NOT IN (SELECT [Quarter] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
AND X.year NOT IN (SELECT [Year] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
AND X.report_status_id NOT IN (SELECT [CommissionStatus_id] FROM [dbo].[PartnerCommissionData] WITH (NOLOCK))
我們怎樣才能以更好的方式改寫它?
我們可以應用合併或任何其他方式....?
預先感謝
但是你'NOLOCK',這不就是神奇的渦輪增壓按鈕? – 2012-02-23 03:12:40