2011-10-06 3 views
1

필터링 된 인덱스를 넣을 dateTime 열이있는 테이블이 있습니다. 이 색인은 매주 다시 작성됩니다. 재건축 할 때마다이 열을 기반으로 2 일 이상 된 행을 포함 시키길 원합니다. 필터링 된 색인을 만들 수 있습니까? 다양한 접근법을 시도하고 구문 오류가 발생합니다. 하여 인덱스 생성에 절은 작동하지 않았다 경우 다음과 같은 예를 들어SQL Server - 필터링 된 인덱스 만들기

는 :

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 | = | <> | != | > | >= | !> | < | <= | !< }