考虑下面的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