Zeitaufwand für ein Order By

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
Peter Ludwig [ Di, 13 November 2007 16:50 ] [ ID #1869280 ]

Re: Zeitaufwand für ein Order By

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.
Harald Stowasser [ Di, 13 November 2007 17:25 ] [ ID #1869281 ]

Re: Zeitaufwand für ein Order By

On 13 Nov., 17:25, Harald Stowasser <stowas... [at] freinet.de> 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
petsch [ Di, 13 November 2007 18:40 ] [ ID #1869283 ]

Re: Zeitaufwand für ein Order By

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
Claus Reibenstein [ Di, 13 November 2007 20:44 ] [ ID #1869286 ]

Re: Zeitaufwand für ein Order By

Peter Schleif schrieb:
> On 13 Nov., 17:25, Harald Stowasser <stowas... [at] freinet.de> 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?
Harald Stowasser [ Di, 13 November 2007 23:50 ] [ ID #1869289 ]
Datenbanken » de.comp.datenbanken.mysql » Zeitaufwand für ein Order By

Vorheriges Thema: Suche SQL Forum
Nächstes Thema: Doppler vermeiden