【问题标题】:ms sql search by nvarchar field通过 nvarchar 字段进行 ms sql 搜索
【发布时间】:2013-10-31 22:34:19
【问题描述】:

我正在使用 MS SQl 2012 并且有简单的表格

id (int) - primary key
fullname (nvarchar(500) 
age (int)
…

在超过 1500 万条记录的表中,我需要进行简单的搜索,例如

select * from Customers where full name like '%sometext%' 

详情: 1. 字数可以少 2. 使用多种语言 3. 该全名还没有任何索引

这样的搜索最好的方法是什么?我应该添加哪些索引?如果不仅有英文单词,我可以使用全文搜索吗?

【问题讨论】:

  • 普通索引无助于这种查询。您需要 SQL 全文搜索或像 Apache Lucene.net 这样的单独工具。
  • 转念一想,这个栏目是一个人的全名吗? nvarchar(500) 似乎真的很重要。您可以将全名拆分为单独的名称,并将它们分别添加到链接到主表的辅助表中。

标签: search sql-server-2012 query-optimization


【解决方案1】:

Sargable 上述查询不符合要求,因此您的full name 列上没有索引会有所帮助。您需要先重组数据或过滤可搜索的内容(年龄 = 30),然后扫描full name

另一种选择是引入@afrancis 指出的文本搜索技术。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多