slow_query_log wird mit UNION Abfragen unnötig gefüllt
am 20.06.2007 16:42:19 von Bernhard RoddeHallo,
ich habe auf meinem Windows 4.1.22 MySQL Server das "Slow Queries Log"
und "Log queries that don't use indexes" eingeschaltet. Die zu
langsamen Abfragen und jene ohne Indexe werden wie erwartet
aufgezeichnet. Leider füllt sich die Logdatei aber auch mit UNION
Abfragen, die sehr wohl Indexe benutzen. Weder über Google noch in den
Groups habe ich was zu UNION und dem Slow Queries Log gefunden.
Ein einfaches Beispiel aus der Logdatei ist folgende Suche nach einem
Artikel:
(SELECT id FROM artikel WHERE id LIKE '91112127%')
UNION
(SELECT id FROM artikel WHERE kurzbeschr LIKE '91112127%')
Eine Analyse mit Explain ergibt wie erwartet, das in beiden Subselects
der jeweils passende Index benutzt wird:
Query EXPLAIN (SELECT id FROM artikel WHERE id LIKE '91112127%') UNION
(SELECT id FROM artikel WHERE kurzbeschr LIKE '91112127%'), Wed Jun 20
16:29:23 2007
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY artikel range PRIMARY PRIMARY 60 2 Using where; Using index
2 UNION artikel range kurzbeschr kurzbeschr 151 1 Using where
UNION RESULT
Mache ich was am UNION Select falsch und lässt sich dieser etwa noch
weiter optimieren, so das er nicht mehr gelogt wird?
Oder gibt es eine Einstellung am Server der verhindert das diese
Subselects mit gelogt werden?
Besten Dank im voraus
Bernhard