継承して最適化しようとしている検索クエリがあります。誰かがそのようなベストプラクティスと推奨事項を持っているかどうか知りたい. 運用サーバーも SQL Server 2000 のままです。
クエリは、数百万件のレコード テーブルを検索するために、5 つの異なる検索基準パラメーター (名、姓、住所、電話番号など) を受け入れる高度な顧客検索ストアド プロシージャです。結合されたすべての列と WHERE 句の列にインデックスがあります。さらに、最初のクエリは、ページング容量のためにレコードをテーブル変数にダンプします。
INSERT INTO @tempCustTable (CustomerID, FirstName, LastName, City, StateProvince, Zip, PhoneNumber)
SELECT DISTINCT cu.CustomerID, cu.FirstName, cu.LastName, a.City,
a.StateProvince, a.Zip, p.PhoneNumber
FROM Customer cu WITH(NOLOCK)
LEFT OUTER JOIN Address a WITH(NOLOCK) ON cu.CustomerID = a.CustomerID
LEFT OUTER JOIN Phone p WITH(NOLOCK) ON cu.CustomerID = p.CustomerID
WHERE (cu.LastName = @LastName OR cu.LastName LIKE @LastName + '%')
AND (@FirstName IS NULL OR cu.FirstName = @FirstName OR cu.FirstName LIKE @FirstName + '%')
AND (@StateProvince = '' OR a.StateProvince LIKE @StateProvince)
AND (@City = '' OR a.City LIKE @City + '%')
AND (@Zip = '' OR a.Zip = @Zip OR a.Zip LIKE @Zip + '%')
ORDER BY cu.LastName, cu.FirstName
クエリのパフォーマンスを向上させる方法について、誰かに推奨事項はありますか?