我有一个关于如何在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汽车,因此搜索所有表格需要时间。
有没有加速搜索?改进搜索的任何想法高度赞赏。也许部分镜像(只有搜索返回的数据)信息到另一个表并查询它而不是主表?
答案 0 :(得分:0)
简单方法:
select * from Table3 where modelId in (list of id's) or makeId in (list of Id's)
换句话说 - 避免加入
高级方式: 设置全文索引