快速SQL Server搜索40M文本记录

时间:2012-11-06 14:50:45

标签: sql sql-server performance

我有一个SQL Server 2005数据库,其中包含一个包含4000万条记录的表。每条记录都包含一个存储逗号分隔的关键字列表的列。每个关键字都是字母和数字的组合。关键字长达7个字符,平均每条记录有15个关键字。关键字在行之间不是唯一的。

我想搜索全部或部分关键字。

我创建了全文索引,显示了328,245,708个唯一键数。搜索效率适用于4个或更多字符的查询(在测试计算机上大约 100ms ),但对于具有3个或更少字符的查询来说效率太慢(最高 3s 在试验机上)。

我一直在尝试排序CONTAINSTABLE的{​​{1}}和CONTAINS个查询,结果相似。

我认为短查询的性能较慢,因为较短的单词会更频繁地在不同的记录中重复。

对结果进行排序并不重要,我一直在尝试按'[query]*'的Rank排序TOP X结果。这不能提供所需的性能。

如何在短期查询中更快地进行此搜索?

2 个答案:

答案 0 :(得分:3)

另一个选择是考虑规范化表结构,以便将数据记录放在一个表中,将标记放在另一个表中,并使用关联表将标记与数据记录相关联。这将允许您对标记执行文本搜索,只需加入关联表以检索相关记录。

答案 1 :(得分:1)

您可能希望将其设置为SOLRSphinx,并让专用的文本搜索引擎处理搜索功能。