1
SELECT  *
FROM    employees e
WHERE   NOT EXISTS
        (
        SELECT  name 
        FROM    eotm_dyn d
        WHERE   d.employeeID = e.id
        )

SELECT * FROM employees a LEFT JOIN eotm_dyn b on (a.joinfield=b.joinfield) WHERE b.name IS NULL

どちらがより効率的で、いくつかの分析ですか?

4

2 に答える 2

4

関連する列の値を NULL にすることはできないと仮定します-

MySQL:

LEFT JOIN/IS NULLよりも効率的です。詳細については、この記事をおNOT EXISTS読みください。

オラクル:

それらは同等です。

SQLサーバー:

NOT EXISTSよりも効率的です。詳細については、この記事をLEFT JOIN/IS NULL読みください

ポストグル:

Oracle と同様に、これらは同等です。

列の値を null にできないという詳細に問題がある場合でも、LEFT JOIN / IS NULL を使用してください。LEFT JOIN が何を意味するかを思い出してください。 このリンクが役立つ場合があります。

于 2010-02-22T05:16:27.383 に答える