0

我有一个关于如何在 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

这个想法是最终用户将关键字放在“本田”等搜索字段中。它应该返回表 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 辆汽车,所以搜索所有表需要时间。

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

4

1 回答 1

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)

换句话说 - 避免连接

进阶方式: 设置全文索引

于 2012-09-21T14:15:36.160 回答