1)我有文本字段FirstName、LastName和City。它们是全文索引的。
2)我还使用了FK字段AuthorId和EditorId,而不是全文索引。
对FirstName = 'abc‘和AuthorId = 1的搜索将首先搜索整个全文索引中的'abc',然后缩小AuthorId =1的结果集。
这很糟糕,因为这是对资源的巨大浪费,因为全文搜索将在许多不适用的记录上执行。
不幸的是,据我所知,这是无法扭转的(首先由AuthorId缩小,然后通过全文搜索匹配的子集),因为FTS进程与Server是分开的。
现在,我提议的解决方案,我寻求反馈:创建另一个计算列,将包括在全文搜索,将识别作者为文本(例如,AUTHORONE)。这样,我就可以摆脱AuthorId限制,而把它作为全文搜索的一部分(对'abc‘的搜索将是'abc’和'AUTHORONE‘--所有这些搜索都作为全文搜索的一部分执行)。
这是个好主意还是不好?为什么?
发布于 2011-08-30 22:48:57
在SQL 2000和SQL 2005中,将可搜索的键嵌入到全文索引所依赖的列中绝对是个好主意。这是因为SQL 2000和SQL 2005不能有效地处理微软所称的混合查询场景。
在SQL 2008中,全文完全集成到数据库中,通常不必在数据中嵌入其他搜索键。
注意:在上面的例子中,您不必将"1“转换为”1“。SQL会发现"Author1“很好。
https://stackoverflow.com/questions/2918904
复制相似问题