0

在今天的查询中,我想从两个不同表的两列中的任意一列中选择具有特定公司名称的行。我做到了

WHERE (N.COMPANY LIKE '%ACME%' OR C.COMPANY LIKE '%ACME%')

首先,运行需要 20 分钟,这很奇怪,因为如果我只过滤其中一列,它需要大约 10 秒。其次,当它完成时,当我知道数据库中有这些记录中这些列的值时,某些行中某些列的值为 NULL。那么这里发生了什么?为什么 SQL 不能对两个表中的两列进行 OR 运算?

(我用一个 UNION 解决它 - 我运行它C.COMPANY LIKE '%ACME%'并用一个 UNIONED 它SELECT... WHERE N.COMPANY LIKE '%ACME%'

4

1 回答 1

0

在一个查询中混用JOIN和关键字是不好的做法,因为它在幕后。根据我的经验,这通常会导致不想要的不受控制的连接。WHEREWHEREINNER JOIN

尝试将您LIKE的 's 直接放在相应表的连接之后,如下所示:

...
JOIN N ON <Your existing relationship> AND N.COMPANY LIKE '%ACME%'
...
JOIN C ON <Your existing relationship> AND C.COMPANY LIKE '%ACME%'
...
于 2013-08-06T07:57:38.847 回答