FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

MySQL - ist enthalten

MySQL - ist enthalten 2006-10-02 13:41
Popcorn
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.

Re: MySQL - ist enthalten 2006-10-07 22:31
Anonymer User
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

Re: MySQL - ist enthalten 2006-10-08 10:59
Hackbert
Limit 1 hat schon mal nix gebracht.
Sollte es nicht LIMIT 0,1 heißen?

Re: MySQL - ist enthalten 2006-10-08 11:12
tilo
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

Re: MySQL - ist enthalten 2006-10-10 17:12
Popcorn
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. %)