【发布时间】:2013-02-08 18:56:57
【问题描述】:
我有一个非常大的表,上面只有 6 个字段。行数大约为 2000 万。我有一个包含一个整数字段的聚集索引。但是,有一个我经常需要搜索的 nvarchar(max) 字段(不一定是唯一的,但永远不会为空),问题是我无法在其上建立索引,因为 SQL 对索引大小有最大限制。我有什么解决这个问题的选择?我对 SQL 不太熟悉,所以请避免使用技术术语。
【问题讨论】:
标签: sql sql-server search indexing
我有一个非常大的表,上面只有 6 个字段。行数大约为 2000 万。我有一个包含一个整数字段的聚集索引。但是,有一个我经常需要搜索的 nvarchar(max) 字段(不一定是唯一的,但永远不会为空),问题是我无法在其上建立索引,因为 SQL 对索引大小有最大限制。我有什么解决这个问题的选择?我对 SQL 不太熟悉,所以请避免使用技术术语。
【问题讨论】:
标签: sql sql-server search indexing
听起来你需要使用Full-Text Search:
SQL Server 中的全文搜索允许用户和应用程序运行 针对 SQL Server 表中基于字符的数据的全文查询。
...
这些列可以具有以下任何数据类型:
char、varchar、nchar、nvarchar、text、ntext、image、xml或varbinary(max)
您不仅需要全文索引才能将索引添加到大文本列...而且如果您要搜索这一大块文本以查找部分匹配项,例如搜索特定的大文档中间的单词或短语,普通索引将毫无用处,因为搜索中的前导通配符(即WHERE TextField LIKE '%Specific word or phrase%')会阻止使用非全文索引。
【讨论】:
没有索引的搜索效率不高。
可以在char, varchar, nvarcahr 列上进行全文搜索。但是,如果您创建全文索引,它总是会更好。
它在某些列上使用 out 索引的原因是允许全文搜索的扩展功能:语义、单词距离、停用词等。
【讨论】: