Peter Thomassen: Zwei Queries ... äquivalent?

Beitrag lesen

Hallo Vinzenz,

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

nicht mit NOT IN, sondern <> ANY

Klappt irgendwie nicht, kann den Fehler nicht finden ... mich nachgebauten, gleich strukturierten Tabellen funktioniert's. Naja, das bekomm ich schon noch irgndwie hin ...

Übrigens: "Use NOT (a = ANY (...)) rather than a <> ALL (...)." (http://dev.mysql.com/doc/mysql/en/Optimising_subqueries.html)

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

"Replace a join with a subquery. For example, use this query:

SELECT DISTINCT column1 FROM t1 WHERE t1.column1 IN (
  SELECT column1 FROM t2);

Instead of this query:

SELECT DISTINCT t1.column1 FROM t1, t2
  WHERE t1.column1 = t2.column1;"

Ebenfalls http://dev.mysql.com/doc/mysql/en/Optimising_subqueries.html.

Ich bin neugierig, was nun richtig ist.

Bye,
Peter