私はゆっくり実行されるSQLストアドプロシージャのパフォーマンスを向上させるために取り組んでいます。SQL Serverの最大機能はSargableですか?
一般に、クエリで使用する実行計画を最適化しようとしています。私の質問には、以下のSQLスニペットが含まれています。このSQL sargableは、特にMax
関数ですか?
SELECT MAX(Audit_Date) AS DATE,
FK_RegisterID
FROM dbo.[Audit Result Entry Detail]
INNER
JOIN dbo.[Audit Register]
ON dbo.[Audit Result Entry Detail].FK_RegisterID = dbo.[Audit Register].PK_ID
WHERE ((SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, Audit_Date))) >= @StartDate
AND (SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, Audit_Date))) <= @EndDate)
AND part_number IN (@ParticipantNumber)
GROUP
BY FK_RegisterID
助けてください。
Sargableはフィルタに適用されます。あなたの場合はsargableではない 'WHERE'節のようなものです。集計ではありません。 –
'Audit_Date> = @StartDateとAudit_Date
「DATEADD」の近くで内部の「選択」を失うことはありません.SQL Management Studioを使用している場合、**クエリ**メニューから**実際の実行計画を含める**を使用することをお勧めします。これは、あなたのクエリを修正するための良い情報を提供し、インデックスがない場合にも表示されます。 – Pete