【问题标题】:How to search fast tables columns for keyword in SQL?如何在 SQL 中搜索关键字的快速表列?
【发布时间】:2012-09-21 14:02:04
【问题描述】:

我有一个关于如何在 SQL 中搜索特定关键字的快速表列的问题。

我有 3 张桌子。

例子

Table 1 has Makes

MakeID MakeName

Table 2 has Models

ModelID MakeID ModelName


Table 3 has Cars and Relationship to Table 1 and Table 2

CarID MakeID ModelID

这个想法是最终用户将关键字放在搜索字段中,例如“honda”。它应该返回表 3 中 MakeName 和 ModelName 包含单词 honda 的所有汽车。

What I do is I select from Table 3 and join on Table 1 and Table 2 Where clause MakeName or ModelName like '%' + keyword + '%', also tables have indexes.

不确定这是否是最有效的方法。由于表 3 包含 30 万辆汽车,因此搜索所有表需要时间。

有没有办法加快搜索速度?任何改进搜索的想法都受到高度赞赏。也许将部分(仅搜索返回的数据)信息镜像到另一个表并查询它而不是主表?

【问题讨论】:

  • 您可以创建这 3 个表的视图
  • 嗨哈扎特。我创建了一个视图,它确实有帮助。到目前为止,这对我来说是最好的解决方案。如果你回答我接受它作为正确的答案。谢谢

标签: asp.net sql c#-4.0 entity-framework-4


【解决方案1】:

简单的方法:

  1. 确保您有索引
  2. 分别在表 1 和表 2 上进行搜索,将有限数量的结果作为 ID
  3. 查询表 3: select * from Table3 where modelId in (list of id's) or makeId in (list of Id's)

换句话说 - 避免连接

进阶方式: 设置全文索引

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2012-01-22
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2016-04-22
    相关资源
    最近更新 更多