Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 05.02.2006 21:20:51 von Zsolt Koppany

Hi,



Ich habe drei abfragen und verstehe nicht warum mysql-4.1.16-win sich so
verhält.



Die erste Abfrage ist sehr langsam und verwendet kein Index. Wenn ich
Abfragen 2 und 3 durchführe werden wohl Indexen benutzt.



Wo ist mein Fehler?



1.

explain select count(*) from object_association AS DEPEND

WHERE DEPEND.from_id IN (12579, 14099, 14233) OR DEPEND.to_id IN(12579,
14099, 14233)

3541 rows using where





2.

explain select count(*) from object_association AS DEPEND

WHERE DEPEND.from_id IN (12579, 14099, 14233)

3 rows using index



3.

explain select count(*) from object_association AS DEPEND

WHERE DEPEND.to_id IN(12579, 14099, 14233)

3 rows using index



Zsolt

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 05.02.2006 21:52:21 von Christian Kirsch

Zsolt Koppany wrote:
> Hi,
>
>
>
> Ich habe drei abfragen und verstehe nicht warum mysql-4.1.16-win sich so
> verhält.
>
>
>
> Die erste Abfrage ist sehr langsam und verwendet kein Index. Wenn ich
> Abfragen 2 und 3 durchführe werden wohl Indexen benutzt.
>
>
>
> Wo ist mein Fehler?
>

Du weigerst Dich obstinat, die Dokumentation zu lesen. Aber so einen
Fehler kannst Du ja leicht korrigieren: Gehe zu dev.mysql.com/doc. Gehe
direkt dorthin, begib Dich nicht über Los.

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 05.02.2006 22:54:44 von steinboeck

Zsolt Koppany schrieb:
> 1.
>
> explain select count(*) from object_association AS DEPEND
>
> WHERE DEPEND.from_id IN (12579, 14099, 14233) OR DEPEND.to_id IN(12579,
> 14099, 14233)
>
> 3541 rows using where

Mit dem "or" wird das nix mit index-verwenden. Nimm besser zwei Abfragen
und addiere die Ergebnisse.

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 06.02.2006 08:34:11 von Zsolt Koppany

Danke Michael,

ist das ein MySql Problem oder gilt das generel?

Zsolt

"Michael Steinböck" schrieb im Newsbeitrag
news:59c3c$43e67427$506c640f$23829@news.chello.at...
> Zsolt Koppany schrieb:
>> 1.
>>
>> explain select count(*) from object_association AS DEPEND
>>
>> WHERE DEPEND.from_id IN (12579, 14099, 14233) OR DEPEND.to_id IN(12579,
>> 14099, 14233)
>>
>> 3541 rows using where
>
> Mit dem "or" wird das nix mit index-verwenden. Nimm besser zwei Abfragen
> und addiere die Ergebnisse.

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 06.02.2006 08:40:00 von Zsolt Koppany

Christian,

kannst du mir doch ein Tip geben wo mein Problem auf dev.mysql.com/doc
beschrieben wird?

Zsolt

"Christian Kirsch" schrieb im Newsbeitrag
news:43e66585$0$342$9b4e6d93@newsread2.arcor-online.net...
> Zsolt Koppany wrote:
>> Hi,
>>
>>
>>
>> Ich habe drei abfragen und verstehe nicht warum mysql-4.1.16-win sich so
>> verhält.
>>
>>
>>
>> Die erste Abfrage ist sehr langsam und verwendet kein Index. Wenn ich
>> Abfragen 2 und 3 durchführe werden wohl Indexen benutzt.
>>
>>
>>
>> Wo ist mein Fehler?
>>
>
> Du weigerst Dich obstinat, die Dokumentation zu lesen. Aber so einen
> Fehler kannst Du ja leicht korrigieren: Gehe zu dev.mysql.com/doc. Gehe
> direkt dorthin, begib Dich nicht über Los.

Re: ?berraschende Abfrage Ergebnisse (wahrscheinlich nur f?r mich).

am 06.02.2006 09:04:14 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 06.02.2006 10:27:06 von Axel Schwenke

"Zsolt Koppany" wrote:



Du schreibst TOFU. Bitte lies
und zitiere in Zukunft richtig. Danke!



>"Michael Steinböck" schrieb
>> Mit dem "or" wird das nix mit index-verwenden. Nimm besser zwei Abfragen
>> und addiere die Ergebnisse.

> ist das ein MySql Problem oder gilt das generel?

Ganz korrekt ist das eine Eigenschaft des MySQL-Optimizers vor 5.x
Lesen bildet!


XL

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 06.02.2006 10:30:24 von stefan hoffmann

tach Zsolt,

Zsolt Koppany schrieb:
> Ich habe drei abfragen und verstehe nicht warum mysql-4.1.16-win sich so
> verhält.
> Die erste Abfrage ist sehr langsam und verwendet kein Index. Wenn ich
> Abfragen 2 und 3 durchführe werden wohl Indexen benutzt.
> Wo ist mein Fehler?

> explain select count(*) from object_association AS DEPEND
> WHERE DEPEND.from_id IN (12579, 14099, 14233) OR DEPEND.to_id IN(12579,
> 14099, 14233)
> 3541 rows using where

Bringt bei MySQL ein kombinierter Index auf from_id und to_id etwas?

Oracle nutzt einen Index (range scan) auf to_id mehrfach und eine
Bitmapauswertung, MSSQL nutzt den kombinierten Index (full scan)...


mfG
--> stefan <--

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 06.02.2006 19:15:58 von newsgroup

stefan hoffmann schrieb:
> tach Zsolt,
>
> Zsolt Koppany schrieb:
>
>
> Bringt bei MySQL ein kombinierter Index auf from_id und to_id etwas?

In Kombination mit or ist das wohl kaum sinnvoll.

> Oracle nutzt einen Index (range scan) auf to_id mehrfach und eine
> Bitmapauswertung, MSSQL nutzt den kombinierten Index (full scan)...

Ein index Full Scan ist wohl kaum etwas, was man erreichen möchte wenn
man "nur" eine Full Table Sacn hat. Wozu sollte ich zuerst den
kompletten Index abgrasen und für jeden Satz auf die Tabelle schauen,
wenn ich gleich die ganze Tabelle durcharbeiten kann (dann spare ich mir
den Overhead mit dem Index).

So far,
Michael

Re: Überraschende Abfrage Ergebnisse (wahrscheinlich nur für mich).

am 07.02.2006 19:53:49 von stefan hoffmann

tach Michael,

Michael König schrieb:
> Ein index Full Scan ist wohl kaum etwas, was man erreichen möchte wenn
> man "nur" eine Full Table Sacn hat.
Kommt auf die Größe des Index an im Verhältnis zur Größe der Tabelle an.

> Wozu sollte ich zuerst den
> kompletten Index abgrasen und für jeden Satz auf die Tabelle schauen,
> wenn ich gleich die ganze Tabelle durcharbeiten kann (dann spare ich mir
> den Overhead mit dem Index).
Je nach Verteilung spart man halt doch...

mfG
--> stefan <--