1

(Column1 = Column2)条件でフィルター処理されたインデックスを作成したい:

CREATE NONCLUSTERED INDEX [IX_Document_IsBalanced]
ON [ACC].[Document] ([DocumentID] ASC)
WHERE SumCredit = SumDebit
ON [PRIMARY]
GO

エラーメッセージは:

キーワード'with'の近くの構文が正しくありません

4

2 に答える 2

7

ドキュメントはこの問題についてかなり混乱していますが、この条件でフィルタリングされたインデックスを実際に作成することはできません(統計のフィルタリングには使用できないため)。

ドキュメントによると:

フィルタ述語は単純な比較ロジックを使用します

「単純」を明確に定義することなく、実際には「単純」は「フィルタリングされた統計で使用可能」を意味します。2つには同じ制限があります。

統計では、等式、範囲、およびリスト内の定数のみを使用できます。これは、次の述語のみを使用できることを意味します。

column = const
column > const
column < const
column IN (const1, const1)

そしてそれらのバリエーション(など)、おそらく(さえ)BETWEENと組み合わされます。ANDOR

于 2012-05-28T06:57:28.397 に答える
-5

フィルター処理されたインデックスはSQLServer2012の機能です-構文に関するMSDNのドキュメントは次のとおりです

例えば:

CREATE NONCLUSTERED INDEX FIBillOfMaterialsWithEndDate
    ON Production.BillOfMaterials (ComponentID, StartDate)
    WHERE EndDate IS NOT NULL ;
GO
于 2012-05-28T06:48:23.420 に答える