2010-05-27 78 views
1

1)我有文本字段FirstName,LastName和City。他们是全文索引。加速SQL Server全文索引通过非索引列的文本重复

2)我也有FK int字段AuthorId和EditorId,而不是全文索引。

上姓=“ABC” AND AUTHORID = 1将首先搜索“ABC”的整个全文索引,然后缩小结果集为AUTHORID甲搜索= 1

这是不好的,因为它是由于全文搜索将在许多不适用的记录上执行,所以会造成巨大的资源浪费。

不幸的是,据我所知,由于FTS过程与SQL Server是分开的,因此无法转向(由AuthorId首先缩小范围,然后全文搜索匹配的子集)。

现在我提出的解决方案,我寻求反馈意见:是否有意义创建另一个计算列,将包括在全文搜索中,将文本标识为作者(例如AUTHORONE)。这样我就可以摆脱AuthorId限制,而是将其作为我全文搜索的一部分(搜索'abc'将是'abc'和'AUTHORONE' - 全部作为全文搜索的一部分执行)。

这是个好主意吗?为什么?

回答

0

在SQL 2000和SQL 2005中,将可搜索键嵌入到全文索引构建的列中绝对是一个好主意。这是因为,SQL 2000和SQL 2005不能有效处理微软所称的mixed query scenarios

在SQL 2008中,全文完全集成到数据库中,并且通常不需要在数据中嵌入其他搜索关键字。

注意:在上例中,您不必将“1”转换为单词“ONE”。 SQL FT会发现“Author1”就好。