次のようなクエリがあるとします。
SELECT COUNT(*) FROM Investors
WHERE 1=1
AND
(
investerName IN (SELECT investerName FROM Assets WHERE Assets.CompanyID=Investors.CompanyID AND Assets.CompanyID = @companyID )
OR investerName IN
(
SELECT investerName FROM InvestmentEnrollments WHERE InvestmentEnrollments .CompanyID=Investors.CompanyIDAND InvestmentEnrollments .state IN (3,4) AND InvestmentEnrollments.CompanyID = @companyID
)
)
AND Investors.CompanyID=@companyID
および次のような別の同様のクエリ:
SELECT COUNT(*) FROM Investors
WHERE 1=1
AND
(
investerName IN (SELECT investerName FROM Assets WHERE Assets.CompanyID=Investors.companyID AND Assets.companyID = @companyID )
OR investerName IN
(
SELECT investerName FROM InvestmentEnrollments WHERE InvestmentEnrollments .companyID=Investors.companyID AND InvestmentEnrollments.state IN (3,4) AND InvestmentEnrollments.companyID = @companyID
)
)
AND Investors.companyID=@companyID
AND Investors.userName = @someInvestorUserName
どちらのクエリもよく似ていますが、2 番目のクエリには where 述語が追加されています。この場合、SQL Server は何をするのでしょうか? 両方を同じクエリ プランに適合させようとしますか? それとも、これらは異なるクエリ プランを必要とする 2 つの別個のクエリと見なされますか?