Rolf B: MySQL LIKE oder REGEXP

Beitrag lesen

Hallo pl,

wenn ich per LIKE auf einem Feld operiere, das im Index steht, kann die DB einen Index-Scan statt eines Table-Scan machen. Und wenn nur am Ende ein % steht, kann sie sogar mit einem Seek beginnen.

Ersteres kann der Optimizer in der Prepare-Phase feststellen, letzteres erst bei Query-Ausführung. Ob er sich die Mühe macht, oder ob er aus anderen Gründen den Index ignoriert, kann man schlecht vorausagen.

Das hängt von den DB-Statistiken ab, d.h. wenn man für die Query auf der kleinen Test-DB einen Explain macht, sagt er ggf. "Table-Scan" (weil er die paar Sätze in einem Happs in den RAM laden kann), während er sich auf der tausendmal so großen Produktions-DB dann doch zum Index bequemt.

Rolf

--
sumpsi - posui - clusi