3

我正在尝试将大量记录插入到全文索引的表中。我已将更改跟踪设置为auto插入到Sql Server 2005上的全文索引表时,性能瘫痪

记录从另一个表中插入,一次编号通常约为50,000。在SQL Server 2008上,这需要5秒钟完成。但在我们2005年的现场环境中运行需要10分钟以上。

看看执行计划,它似乎插入到全文跟踪表的聚集索引中,这是问题所在。主键列是uniqueidentifier,分配为newsequentialid()。但在2008年1 Clustered Index Mergefulltext_index_docidstatus,2005做了聚集索引插入fulltext_index_map上50,000次。

不幸的是,升级服务器现在不是一个选项。关闭变更跟踪可以解决问题,但我真的不想这样做,因为管理人口本身并不会很好。更改跟踪似乎是获取全文索引中显示新记录的最快方式,这是优先考虑的事项。

有没有办法在启用此功能的同时保持更改跟踪?

回答

2

我怀疑问题的真正本质是全文引擎在2008年被移入SQL Server内部,而以前的版本使用外部MSFTESQL服务。这意味着SQL 2008在处理全文索引时可以充分利用基于集合的操作,而正如您所见,2005年必须单独处理每行。更多细节可以在Microsoft White Paper找到。最重要的是,我认为您必须关闭更改跟踪才能实现您正在寻找的或长时间插入的效果。

+0

谢谢。我想我必须在批量操作之前关闭更改跟踪,然后再运行增量更新。 – 2010-07-22 09:25:19