2011-10-06 12 views
1

フィルタリングされたインデックスを配置するdateTime列を持つテーブルがあります。このインデックスは毎週再構築されます。それが再構築されるたびに、この列に基づいて、2日以上経過した行を含めるようにします。フィルタリングされたインデックスを作成できますか?私はさまざまなアプローチを試してみましたが、構文エラーが出ます。SQL Server - フィルタリングされたインデックスの作成

たとえば、インデックスの作成で次のWhere句は動作しませんでした:

WHERE (ReadTime > DateAdd(dd,-2,GetDate())) 

答えて

5

あなたが直接getdate()を参照することにより、これを行うことはできません。動的SQLが必要です。

CREATE INDEX文法では、定数との比較のみが可能です。

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> (column [ ASC | DESC ] [ ,...n ]) 
    [ INCLUDE (column_name [ ,...n ]) ] 
    [ WHERE <filter_predicate> ] 
    ... /*Irrelevant grammar removed*/ 

<filter_predicate> ::= 
    <conjunct> [ AND <conjunct> ] 

<conjunct> ::= 
    <disjunct> | <comparison> 

<disjunct> ::= 
     column_name IN (constant ,...n) 

<comparison> ::= 
     column_name <comparison_op> constant 

<comparison_op> ::= 
    { IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !< } 
関連する問題