我有一个SQL Server 2005数据库,其中有一个包含4000万条记录的表。每条记录都包含一个存储逗号分隔的关键字列表的列。每个关键字都是字母和数字的组合。关键字长达7个字符,平均每条记录有15个关键字。关键字在行之间不唯一。在40M文本记录上快速SQL Server搜索
我想搜索全部或部分关键字。
我创建了显示328,245,708唯一键数的全文索引。搜索效率罚款(在测试机上围绕为100ms)的4个或更多字符的查询,但对于具有3点或更少的字符(最多三分在测试机器上)查询太慢。
我一直在试图用类似的结果排序'[query]*'
两个CONTAINSTABLE
和CONTAINS
查询。
我认为短查询的性能比较慢,因为短词在不同记录中更频繁地重复。
排序结果并不重要,我一直试图返回TOP X
结果排序从CONTAINSTABLE
排名。这不能提供所需的性能。
如何使短搜索的搜索速度更快?
我会重建表结构,使用关键字的新表,并使用一个外键 –
我与t-clausen.dk指回主键原始表。您可以为每个不同的关键字创建一个具有ID的表格,然后使用rowID/KeywordID对创建一个表格,并在现有表格和对表格之间创建一对多关系。 – Beth
相比于关键字列上的全文索引,性能会有所提升吗?同样,我会在搜索时遇到重复结果的可能性问题。 – mrt