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?