1
我有一個表,其中我想放置一個篩選索引的dateTime列。該指數將每週重建。每次重建時,我都希望它包含兩天前和更新的行,並基於此列。我可以創建這樣的過濾索引嗎?我嘗試了各種方法,並且出現語法錯誤。SQL Server - 創建篩選索引
例如,以下凡在創建索引條款沒有工作:
WHERE (ReadTime > DateAdd(dd,-2,GetDate()))
我有一個表,其中我想放置一個篩選索引的dateTime列。該指數將每週重建。每次重建時,我都希望它包含兩天前和更新的行,並基於此列。我可以創建這樣的過濾索引嗎?我嘗試了各種方法,並且出現語法錯誤。SQL Server - 創建篩選索引
例如,以下凡在創建索引條款沒有工作:
WHERE (ReadTime > DateAdd(dd,-2,GetDate()))
您不能直接引用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 | = | <> | != | > | >= | !> | < | <= | !< }