(Column1 = Column2)条件でフィルター処理されたインデックスを作成したい:
CREATE NONCLUSTERED INDEX [IX_Document_IsBalanced]
ON [ACC].[Document] ([DocumentID] ASC)
WHERE SumCredit = SumDebit
ON [PRIMARY]
GO
エラーメッセージは:
キーワード'with'の近くの構文が正しくありません
(Column1 = Column2)条件でフィルター処理されたインデックスを作成したい:
CREATE NONCLUSTERED INDEX [IX_Document_IsBalanced]
ON [ACC].[Document] ([DocumentID] ASC)
WHERE SumCredit = SumDebit
ON [PRIMARY]
GO
エラーメッセージは:
キーワード'with'の近くの構文が正しくありません
ドキュメントはこの問題についてかなり混乱していますが、この条件でフィルタリングされたインデックスを実際に作成することはできません(統計のフィルタリングには使用できないため)。
ドキュメントによると:
フィルタ述語は単純な比較ロジックを使用します
「単純」を明確に定義することなく、実際には「単純」は「フィルタリングされた統計で使用可能」を意味します。2つには同じ制限があります。
統計では、等式、範囲、およびリスト内の定数のみを使用できます。これは、次の述語のみを使用できることを意味します。
column = const
column > const
column < const
column IN (const1, const1)
そしてそれらのバリエーション(など)、おそらく(さえ)BETWEEN
と組み合わされます。AND
OR
フィルター処理されたインデックスはSQLServer2012の機能です-構文に関するMSDNのドキュメントは次のとおりです
例えば:
CREATE NONCLUSTERED INDEX FIBillOfMaterialsWithEndDate
ON Production.BillOfMaterials (ComponentID, StartDate)
WHERE EndDate IS NOT NULL ;
GO