【问题标题】:how to perform efficient search on non-index field of a very large table in sql server如何在sql server中对一个非常大的表的非索引字段执行高效搜索
【发布时间】:2013-02-08 18:56:57
【问题描述】:

我有一个非常大的表,上面只有 6 个字段。行数大约为 2000 万。我有一个包含一个整数字段的聚集索引。但是,有一个我经常需要搜索的 nvarchar(max) 字段(不一定是唯一的,但永远不会为空),问题是我无法在其上建立索引,因为 SQL 对索引大小有最大限制。我有什么解决这个问题的选择?我对 SQL 不太熟悉,所以请避免使用技术术语。

【问题讨论】:

    标签: sql sql-server search indexing


    【解决方案1】:

    听起来你需要使用Full-Text Search

    SQL Server 中的全文搜索允许用户和应用程序运行 针对 SQL Server 表中基于字符的数据的全文查询。

    ...

    这些列可以具有以下任何数据类型:charvarcharncharnvarchartextntextimagexmlvarbinary(max)

    您不仅需要全文索引才能将索引添加到大文本列...而且如果您要搜索这一大块文本以查找部分匹配项,例如搜索特定的大文档中间的单词或短语,普通索引将毫无用处,因为搜索中的前导通配符(即WHERE TextField LIKE '%Specific word or phrase%')会阻止使用非全文索引。

    【讨论】:

    • 我明白了,我将尝试在我的 SQL 服务器上启用全文搜索,看看它是否允许我为此列建立索引。之后我会回复你的。感谢您的快速回复。
    【解决方案2】:

    没有索引的搜索效率不高。

    可以在char, varchar, nvarcahr 列上进行全文搜索。但是,如果您创建全文索引,它总是会更好。

    它在某些列上使用 out 索引的原因是允许全文搜索的扩展功能:语义、单词距离、停用词等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多