3

我正在尝试将大量记录插入全文索引的表中。我已将更改跟踪设置为auto.

这些记录是从另一个表中插入的,每次插入的数量通常约为 50,000。在 SQL Server 2008 上,这需要大约 5 秒才能完成。但是在我们的 live 2005 环境中运行这需要 10 分钟以上。

查看执行计划,似乎是插入到全文跟踪表的聚集索引中,这就是问题所在。主键列是用uniqueidentifier分配的newsequentialid()。但是,虽然 2008 年执行了 1 个聚集索引合并fulltext_index_docidstatus但 2005 年执行了 50,000 次聚集索引插入fulltext_index_map

不幸的是,升级服务器现在不是一个选项。关闭更改跟踪可以解决问题,但我真的不想这样做,因为自己管理人口不会很好。更改跟踪似乎是让新记录出现在全文索引中的最快方法,这是一个优先事项。

有没有办法在保持更改跟踪启用的同时解决这个问题?

4

1 回答 1

2

我怀疑您的问题的真正本质是全文引擎在 2008 年被移到 SQL Server 内部,而以前的版本使用外部 MSFTESQL 服务。这意味着 SQL 2008 在使用全文索引时可以充分利用基于集合的操作,而正如您所见,2005 必须单独处理每一行。更多详细信息可在此Microsoft 白皮书中找到。底线是,我认为您必须关闭更改跟踪才能获得您正在寻求的性能或忍受较长的插入时间。

于 2010-07-21T19:08:46.887 回答