首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一大组列中搜索一大组令牌

在一大组列中搜索一大组令牌
EN

Stack Overflow用户
提问于 2014-06-26 19:45:30
回答 1查看 124关注 0票数 1

我在Server 2008中工作。我试图返回给定列有一个子字符串的所有记录,该子字符串至少匹配一个非常大的令牌集的一个令牌。我搜索的列数量也相当大。做这件事最好的方法是什么?

我知道最基本的方法是:

代码语言:javascript
复制
WHERE  
    (col1 LIKE '%token1%' OR col1 LIKE '%token2%' OR...  
     OR  
     col2 LIKE '%token1%' OR col1 LIKE '%token2%' OR...  
     OR  
     .  . . .
    )  

然而,这将是非常繁琐和庞大的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-26 19:52:54

这是一个有点长的评论。

你基本上有两种选择。第一个是全文搜索。也就是说,将每一列视为文档,并在其上创建全文索引。

第二种选择是使数据结构正常化。您将为每个列中的每个令牌创建一个单独的行。这个规范化结构中的一行如下所示:

代码语言:javascript
复制
EntityId      "Column"     Token
    1           col1       Toke1
    1           col3       Toke2
    2           col1       Toke2
 . . .

这种结构将大大加快使用适当索引的搜索速度。

顺便说一下,你的数据结构看起来很可疑。包含列中事物列表的表通常是个坏主意。关系数据库中列表的适当数据结构是表,而不是列。包含相同类型信息(例如标记列表)的多列表通常建议对列进行非规范化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24438936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档