我的经理说,在基础表数据发生变化后,可能需要一段时间才能更新全文搜索索引。
例如,如果我有一个包含Products
列的表Description
并且我更新了该描述,那么我可能需要一些时间来搜索该新描述。真的吗?这需要多长时间?这在SQL 2008中有所改进吗?
如果用户修改了描述,我们要求后续搜索应该搜索修改后的数据,而不是更改之前的陈旧数据。
实现此目的的正确/推荐代码模式是什么?我们应该等待指数发出信号吗?如果是,那么关于何时完成索引更新的保证是什么,例如,可以在繁忙的系统中延迟几分钟(推回某个队列,而不是优先于其他到达数据库的命令处理)。
答案 0 :(得分:0)
在任何表上创建的全文索引每当您在该时间插入任何值时都会更新,如果表未更新而不是全文索引而不是重建
答案 1 :(得分:0)
如果您进行大量插入或更新,可能会导致FTI更新中的长时间延迟。 下面是一些代码,用于在FTI目录状态空闲之前延迟代码:
DECLARE @CatalogName VARCHAR(MAX)
SET @CatalogName = 'Your FTI catalog name'
DECLARE @status int
SET @status = 1 --non-idle FTI see below
WHILE @status > 0 --HERE WE LOOP UNTIL FTI STATUS IS IDLE
begin
SELECT
@status = FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateStatus')
FROM sys.fulltext_catalogs AS cat
BEGIN
waitfor delay '00:00:05';
PRINT @status
END
END
如需参考,请参阅此主题:How can I know when SQL Full Text Index Population is finished?