建议sql server全文索引更改跟踪和填充

时间:2011-12-20 23:10:28

标签: sql-server-2005 full-text-search

我有两张表有数百万条记录 我想全文搜索它们上面的几列(基本上是名字和姓氏。)然而,这两个表基本上都被擦除,并在周末被传统的DTS包取代。
我将跟踪设置更改为自动,当DTS运行时,表被锁定,所有查询都失败了。

所以,我想以正确的方式做到这一点。我应该使用哪些设置或日程安排进行FTS更改跟踪和人口?我应该将更改跟踪设置为关闭,然后在DTS导入运行后安排完整填充吗?

此外,“变更跟踪”和“人口”之间的区别是什么?它们有何关联? 如果没有变更跟踪,索引如何工作? 即使更改跟踪已关闭,完整填充是否会添加索引?

1 个答案:

答案 0 :(得分:27)

在周末擦除表格时,有多种方法可以接近索引填充。一种选择是在擦除之前删除表上的全文索引,并在替换旧版DTS包之后重新创建索引。另一个选项是更改索引以将CHANGE TRACKING设置为MANUAL。在擦除并重新填充表之后,可以通过调用ALTER FULLTEXT INDEX ... START UPDATE POPULATION来触发ft索引填充。我更喜欢后者(如果此表看到很多更新,请不要忘记将更改跟踪重置为AUTO。)

CHANGE_TRACKING和POPULATION之间的区别 -

CHANGE_TRACKING 指定何时以及是否对表进行的更改传播到全文索引。它可以设置为AUTO,MANUAL或OFF。

仅当CHANGE_TRACKING设置为MANUAL或OFF时,

POPULATION 才有意义。

当设置为MANUAL时,用户必须触发update population命令,以便全文可以索引跟踪的更改,即它们不会自动编入索引。

OFF设置指定SQL Server不跟踪已更改的数据,而是在命令调用期间仅将表编入索引。当CHANGE_TRACKING设置为OFF时指定NO POPULATION时,将保留全文索引,直到用户使用START FULLTEXT POPULATION或START INCREMENTAL POPULATION子句调用ALTER FULLTEXT INDEX。

CREATE FULLTEXT INDEX MSDN文章更深入地介绍了所有这些选项。