Zeitaufwand für ein Order By
Zeitaufwand für ein Order By
am 13.11.2007 16:50:57 von Peter Ludwig
Hallo,
ich habe eine Tabelle mit ca. 46000 Einträgen und mache einen Select darauf.
Das Ergebnis wird in 0,00x Sekunden geliefert.
Wenn ich aber einen Order By mache (in meinem Fall auf 3 Spalten) dann
dauert die Abfrage ca. 5 Sekunden.
Ist das normal?
Kann man das beschleunigen? (irgendwelchen Indizes?; Konfiguration der
Datenbank / MySQL)
Nach welchem Sortierverfahren sortiert das Order By?
Gruß Peter
Re: Zeitaufwand für ein Order By
am 13.11.2007 17:25:45 von Harald Stowasser
Peter Ludwig schrieb:
> Hallo,
>
> ich habe eine Tabelle mit ca. 46000 Einträgen und mache einen Select darauf.
> Das Ergebnis wird in 0,00x Sekunden geliefert.
>
> Wenn ich aber einen Order By mache (in meinem Fall auf 3 Spalten) dann
> dauert die Abfrage ca. 5 Sekunden.
>
> Ist das normal?
ja.
> Kann man das beschleunigen? (irgendwelchen Indizes?; Konfiguration der
> Datenbank / MySQL)
ja, ja, ungern.
> Nach welchem Sortierverfahren sortiert das Order By?
http://dev.mysql.com/doc/refman/5.1/de/order-by-optimization .html
Ob filesort verwendet wird steht im Explain (Using filesort):
http://dev.mysql.com/doc/refman/5.1/de/explain.html
Wenn du damit nicht weiterkommst, dann poste mal die Ausgabe von
Explain, das Statement und die Create table Anweisung.
Re: Zeitaufwand für ein Order By
am 13.11.2007 18:40:15 von petsch
On 13 Nov., 17:25, Harald Stowasser wrote:
>
> > Ist das normal?
>
> ja.
Nein.
Wenn Du einen Index *wirklich* auf alle drei Spalten gesetzt hättest,
gäbe es keine Probleme ... aber:
Ein Primär- oder Unique-Index über mehrere Spalten beschleunigt nur
die *erste* Spalte des kombinierten Index. Die weiteren Spalten müssen
zusätzlich mit einem normalen Index versehen werden.
Peter Schleif
Re: Zeitaufwand für ein Order By
am 13.11.2007 20:44:53 von Claus Reibenstein
Peter Ludwig schrieb:
> Wenn ich aber einen Order By mache (in meinem Fall auf 3 Spalten) dann
> dauert die Abfrage ca. 5 Sekunden.
>
> Ist das normal?
Wenn auf den Spalten, nach denen sortiert wird, kein Index sitzt: ja.
Gruß. Claus
Re: Zeitaufwand für ein Order By
am 13.11.2007 23:50:55 von Harald Stowasser
Peter Schleif schrieb:
> On 13 Nov., 17:25, Harald Stowasser wrote:
>>> Ist das normal?
>> ja.
>
> Nein.
Doch.
Das Filesort über 46000 Einträge etwas dauert ist Normal!
Zumindest wenn es keine Indizes gibt.
> Wenn Du einen Index *wirklich* auf alle drei Spalten gesetzt hättest,
> gäbe es keine Probleme ... aber:
Du postest komisch. *Ich* habe gar nix gesetzt.
> Ein Primär- oder Unique-Index über mehrere Spalten beschleunigt nur
> die *erste* Spalte des kombinierten Index. Die weiteren Spalten müssen
> zusätzlich mit einem normalen Index versehen werden.
Syntax Error.
Niemand sprach hier von Unique-Indexen.
Die 'weiteren Spalten' müssen gar nicht mit normalen Index versehen werden.
Von was zum Henker redest du?