如何解决下面sql脚本的查询效率?select Distinct SMPBILL_ID from TSmpBasicInfo sbi
LEFT JOIN TSMPValidityStatus vs ON sbi.SMPBILL_ID = vs.BILL_ID
LEFT JOIN TSMPUserBasicInfo ubi ON sbi.UserID = ubi.UserID
LEFT JOIN TSMPUserPositionSet ups ON ups.UserID = ubi.UserID
LEFT JOIN TPositionInfo pi ON pi.PositionID = ISNULL(sbi.SalePositionID, ups.PositionID)
WHERE sbi.Submit_Status = 1 AND vs.LastStatus IS NULL
AND ubi.UserType IS NOT NULL AND ubi.UserType != ''
AND (sbi.ApproveType != 2 OR sbi.ApproveType IS NULL)
AND vs.[CoordinatorStatus] IS NULL
AND (sbi.DeleteFlag IS NULL OR sbi.DeleteFlag = 2)
AND pi.RoleID = 'dc911e2d-0812-4b3c-a5aa-1aec036994f5'
AND (( sbi.Attribute IN ('0','1','2','3','4')
AND ( pi.Region = 'RE' OR pi.Region = 'RS' OR pi.Region = 'RSW'
OR pi.Region = 'RNE' OR pi.Region = 'RN' ))
OR (sbi.Attribute NOT IN ('0','1','2','3','4')
AND sbi.Attribute IN ('5','6','7','8','9' )))
LEFT JOIN TSMPValidityStatus vs ON sbi.SMPBILL_ID = vs.BILL_ID
LEFT JOIN TSMPUserBasicInfo ubi ON sbi.UserID = ubi.UserID
LEFT JOIN TSMPUserPositionSet ups ON ups.UserID = ubi.UserID
LEFT JOIN TPositionInfo pi ON pi.PositionID = ISNULL(sbi.SalePositionID, ups.PositionID)
WHERE sbi.Submit_Status = 1 AND vs.LastStatus IS NULL
AND ubi.UserType IS NOT NULL AND ubi.UserType != ''
AND (sbi.ApproveType != 2 OR sbi.ApproveType IS NULL)
AND vs.[CoordinatorStatus] IS NULL
AND (sbi.DeleteFlag IS NULL OR sbi.DeleteFlag = 2)
AND pi.RoleID = 'dc911e2d-0812-4b3c-a5aa-1aec036994f5'
AND (( sbi.Attribute IN ('0','1','2','3','4')
AND ( pi.Region = 'RE' OR pi.Region = 'RS' OR pi.Region = 'RSW'
OR pi.Region = 'RNE' OR pi.Region = 'RN' ))
OR (sbi.Attribute NOT IN ('0','1','2','3','4')
AND sbi.Attribute IN ('5','6','7','8','9' )))
你的这个数据有规律没,能不能改写成sbi.Attribute>4?或者,把用到not in条件的表先按此条件查询出结果记入表变量或临时表,然后再与其他表关联查询,试试