0

今日のクエリでは、2 つの異なるテーブルの 2 つの列のいずれかに特定の会社名を持つ行を選択したいと考えていました。みたいにやった

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

まず、実行に 20 分かかりました。列の 1 つだけをフィルター処理した場合、約 10 秒かかったため、これは奇妙でした。第二に、それが終了したとき、それらのレコードのそれらの列のデータベースに値があるという事実を知っているときに、いくつかの行のいくつかの列の値が NULL でした。それで、ここで何が起こっているのですか?SQL が 2 つのテーブルの 2 つの列に対して OR を実行できないのはなぜですか?

(私はUNIONでそれを回避しました-私はそれを実行し、それをC.COMPANY LIKE '%ACME%'UNIONEDしましたSELECT... WHERE N.COMPANY LIKE '%ACME%')

4

1 に答える 1

0

1 つのクエリで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 に答える