Script oder SQL? Wer sortiert schneller...

TSc

Legendäres Mitglied
Hallo Ayomer,

ich stehe grad vor einer Perormancefrage.

Es geht um die Sortierung einer Suchabfrage.
Der User kann verschiedene Indizes (wie war gleich der Plural von Index?) nach seinen Prioritäten gewichten und soll dann aus einer Tabelle mit hundertausend Datensätzen die für ihn relevantesten 100 angezeigt bekommen.

Welche wäre die performanteste Lösung diese Sortierung durchführen zu lassen.

1) Über die ORDER BY - Funktion in der dann eine komplexen Formel aus den Prioritäten einen "Gewichtungs"-Index errechnet und nach diesem sortiert.

2) Alle hundertausend Datensätze auslesen und durch ein PHP-Script gewichten und sortieren lassen.

Ich habe nicht genug Erfahrung mit entsprechend großen Tabellen, daher bitte ich euch hier um Hilfe.
Es wäre schön wenn mir jemand hier weiter helfen könnte.

Gruß,
Tom
 
Die Frage sollte eigentlich normalerweise immer eindeutig zugunsten der Datenbank beantwortet werden.

Denn Datenbanken sind ja gerade dazu da, große Datenmengen mithilfe von Indices rasch zu filtern und zu sortieren. Und eine der Grundideen von Sql als einer Sprache der vierten Generation besteht ja darin, daß man sich nicht mehr mit den algorithmischen Details eines Problems herumschlägt, sondern nur noch sagt, was gemacht werden soll (hier: Berechne dies und sortiere dann) - nicht mehr, wie.

Sprich: Bei großen Datenmengen sollte eigentlich die Datenbank immer schneller sein als eine händische Lösung, die zusätzlich die Daten erst einmal aus der Datenbank heraustransportieren muß.
 
Danke für diese Ausführung.

Mich macht zwar der Gedanke nervös eine so grosse Datenmenge durch eine ORDER BY - Sortierung mit komplexem Algorithmus laufen zu lassen aber natürlich hast du recht.

Grundsätzlich ist das der Job der DATENbank...
 
Da brauchst Du aber keine Angst haben :)

Ich hab hier 11 Mio. Datensätze und sortiere, gruppiere auch wild mit MySQL.

Gruß

Christian
 
Oracle10 hier mit 120 Millionen Records in einer Tabelle...
no problem, aber manchmal dauert es ein wenig :)
 
Zurück
Oben