Peter: WHERE col = 1 OR col = 2 OR col = 3 oder WHERE COL in (1,2,3)?

Beitrag lesen

Tach,

ich glaube kaum,

Leider auch nur Glaube ... ;-)

mysql optimiert selber einiges bei WHERE-klauseln, und die doku sagt selber, dass dort bisher nur ein teil dokumentiert ist.

Naja, zu IN () steht nichts dort.

aber wenn ich mir dort nur das erste beispiel anschaue, bzgl. des entfernens unnötiger klammern - dann gehe ich davon aus, dass mysql deine bedingung sowieso erst mal "zerlegt", und dass IN() oder mehrere = mit OR verknüpft keinen unterschied beim "raussuchen" der datensätze machen; es wird für mysql allenfalls beim parsen deiner query einen unterschied machen, aber auch der dürfte absolut zu vernachlässigen sein.

Daß das Parsen das geringere Problem ist, sehe ich auch so - es geschieht ja pro Query nur einmal, egal wieviel Millionen Datensätze nachher durchsucht werden müssen.

dass du mysql beim anschließenden suchen der daten "hilfst", in dem du einen geeigneten index erstellst, scheint mir weitaus wichtiger.

Die betroffenen Spalten, um die es hier geht, sind sowieso Index-Spalten.

Peter B.