Bisher habe ich enthalten sein immer mit count geprüft. Count zählt aber alles durch. Gibt es da einen fixeren Weg, das nur guckt, ob überhaupt ein einziges Element auf diese Anfrage zutrifft? Limit 1 hat schon mal nix gebracht.
Da hilft das EXISTS Element. Ob das allerdings schneller ist, weiß ich nicht. Wenn die Datenbank klug implementiert ist, optimiert die das hoffentlich.
Ein schnelles Googlen ergab folgende Seite mit folgender Veranschaulichung:
SELECT columns
FROM tables
WHERE EXISTS ( subquery );
von
http://www.techonthenet.com/sql/exists.php
Limit 1 hat schon mal nix gebracht.
Sollte es nicht LIMIT 0,1 heißen?
Ich denke nicht, wozu eine Startangabe? In diesem Fall (mit LIMIT geprüft), will er doch nur ein Ergebnis, da ist der Start dann überflüssig
So, heute mal wieder MySQL. Danke, aber das exists bringt mir hier keinen Gewinn. Da schicke ich ja gleich zwei Anfragen los. Und schon die einfache Variante scheint langsamer als das Count:
SELECT * FROM ids WHERE id = '123413413' LIMIT 1
SELECT COUNT(*) FROM ids WHERE id = '123413413'
insbesondere wenn der Eintrag nicht vorhanden ist, macht sich der Unterschied bemerkbar. Aber inzwischen ist eh alles hinreichend schnell geworden. %)