1

这是我当前的查询

我的表格截图:

截屏

SELECT * FROM jdsubs
 INNER JOIN amipartnumbers ON amipartnumbers.oemitem = jdsubs.oempartnumber
    WHERE ((([txtEnterNumber])
    In ([jdsubs].[oemsubnumber],[jdsubs].[oempartnumber])));
UNION SELECT * FROM ihsubs
 INNER JOIN amipartnumbers ON amipartnumbers.oemitem = ihsubs.oempartnumber
    WHERE ((([txtEnterNumber])
    In ([ihsubs].[oemsubnumber],[ihsubs].[oempartnumber])));
UNION SELECT * FROM mfsubs
 INNER JOIN amipartnumbers ON amipartnumbers.oemitem =mfsubs.oempartnumber
    WHERE ((([txtEnterNumber])
    In ([mfsubs].[oemsubnumber],[mfsubs].[oempartnumber])));

我可以将其简化为仅在一个查询上进行联合,然后在另一个查询上我可以将 txtEnterNumber 与 oemsubnumber 和 oempartnumber 进行比较?

我觉得这个查询做的工作太多了。

或者我这样做对吗?

我正在搜索大约数百万条记录,所以我想确保它尽可能高效

4

1 回答 1

2

您必须按原样运行它。假设oemitemoempartnumber和 & oemsubnumber都被索引,因为它们应该是。

如果您先合并所有内容,然后尝试比较您的部件号,您将针对未索引的查询结果这样做。

一些改进的想法是:

  • 如果一个零件号只能匹配一个零件表,那么每次查询一个,直到得到结果。
  • 合并所有三个零件表(将 1 个字段设置为标志以确定零件原点),然后针对该表运行搜索。

祝你好运

于 2013-05-09T15:05:19.733 回答