如何在SQL中搜索快速表列的关键字?

时间:2012-09-21 14:02:05

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

我有一个关于如何在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包含300K汽车,因此搜索所有表格需要时间。

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

1 个答案:

答案 0 :(得分:0)

简单方法:

  1. 确保您有索引
  2. 分别搜索表1和表2,将有限数量的结果作为ID
  3. 查询表3: select * from Table3 where modelId in (list of id's) or makeId in (list of Id's)
  4. 换句话说 - 避免加入

    高级方式: 设置全文索引