slow_query_log wird mit UNION Abfragen unnötig gefüllt

slow_query_log wird mit UNION Abfragen unnötig gefüllt

am 20.06.2007 16:42:19 von Bernhard Rodde

Hallo,
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 ALL (null)


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

Re: slow query log wird mit UNION Abfragen unnoetig gefuellt?

am 20.06.2007 18:15:44 von Axel Schwenke

Bernhard Rodde wrote:

> 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.

Das ist offensichtlich ein Bug. Ich hab das gleich mal reported:

http://bugs.mysql.com/bug.php?id=29244


XL