かなり簡単な質問です。共通テーブル式(CTE)にINDEXを追加できますか?
番号。
CTEは一時的な「インライン」ビューです。このような構造にインデックスを追加することはできません。
インデックスが必要な場合は、CTEのSELECTを使用して通常のビューを作成し、それをインデックス付きビューにします(ビューにクラスター化インデックスを追加します)。ここで概説されている一連のルールに従う必要があります: インデックス付きビューの作成 。
同じ要件があります。インデックスをCTEに追加することはできません。ただし、CTEの選択では、結合フィールドにORDER BY句を追加すると、実行時間が20分以上から10秒未満に短縮されました。
(CTE selectでORDER BYを許可するには、SELECT TOP 100 PERCENTも追加する必要があります。)
[下のコメントから言い換え引用を追加するために編集]:
CTEにDISTINCTがある場合、TOP 100 PERCENTは機能しません。この詐欺師の方法は常に利用可能です。selectでTOPをまったく必要とせずに、ORDER BYステートメントを次のように変更します。
ORDER BY [Blah] OFFSET 0 ROWS