Suboptimal optimiert
2007-04-30 17:38Wenn der MySQL-Optimizer wieder mal nicht richtig optimiert und einen völlig beschränkten Abfrageplan wählt, dann hilft ein beherztes:
SET optimizer_search_depth=1;
Und damit machen wir bei unserem geliebten INNER-LEFT-undsoweiter-JOIN-dingens mit LIMIT 0,25 aus:
25 rows in set (1 min 7.69 sec)
ein
25 rows in set (3.16 sec).
Happy Birthday und sowas ähnliches – sch* Frickelsoftware.
PS. Mein nichtproduktives Testsystem mit (derzeit) MySQL 5.1.17 optimiert übrigens richtig – sprich: wählt den Abfrageplan, den ich als Mensch auch wählen würde und der ja, wie man an den obigen Zahlen auch erkennen dürfte, unwesentlich performanter läuft.
Und wenn dann auch noch ein kleines Indexchen über das Feld gelegt sein tun würde, das sich im WHERE so vor sich hinwehrt, dann hätten wir sogar unser nullkomma-SELECT.
PPS: Schon 6, in Worten — sechs — Treffer bei Google für meine Wortschöpfung „halbersfalle“ – ich schaff’s – dieses Wort ist in Bälde nicht mehr aus der deutschen Sprache wegzudenken.