Peter Thomassen: Zwei Queries ... äquivalent?

Beitrag lesen

Hallo Vinzenz!

Meiner Meinung nach besser:

SELECT DISTINCT number
FROM contact
LEFT JOIN contract
ON contact.id = contract.id\_contact-signatory
WHERE contract.id\_contact-signatory IS NULL

Danke.

SELECT number FROM contact
WHERE id NOT IN(SELECT id\_contact-signatory FROM contract)

nicht mit NOT IN, sondern <> ANY

SELECT number
FROM contact
WHERE id <> ANY (SELECT id\_contact-signatory FROM contract)
http://dev.mysql.com/doc/mysql/en/ANY_IN_SOME_subqueries.html

Meint, dass id ungleich irgendeinem id_contact-signatory sein muss. Das ist wahr --> Selbes Ergebnis wie bei SELECT number FROM contact.

NOT EXISTS dürfte auch eine Möglichkeit sein.

Wie geht das dann?

In sehr vielen Fällen sind Subqueries ineffizient. Dieses ist ein schönes Beispiel dafür.

Warum?

Bye,
Peter