Autor |
Nachricht |
DEKONSTRUKTIV
Dabei seit: 22.06.2009
Ort: bln
Alter: -
Geschlecht: -
|
Verfasst So 10.11.2013 15:58
Titel
|
|
|
qualidat hat geschrieben: | Du gibst der Liste ein zusätzliches Feld und füllst dieses mit Zufallszahlen aus einem möglichst großen Bereich, so verringerst du die Gefahr, gleiche Nummern zu erhalten. Danach sortierst du nach diesem Feld. Am Ende gehst du die Liste einfach der Reihe nach in Zweier-Schritten durch ... oder du nimmst jeweils einen von vorne und einen von hinten ... oder ... |
im ernst? weia.
|
|
|
|
|
qualidat
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst So 10.11.2013 16:57
Titel
|
|
|
Aha. Würdest du bitte auch erklären, was du daran ungeeignet findest? "Sort" ist ein Befehl, der in Sekundenbruchteilen ausgeführt wird, wenn es sich nicht gerade um zig-tausende Datensätze handelt. Und so lang war die Liste des TE m.W. nicht.
|
|
|
|
|
Anzeige
|
|
|
DEKONSTRUKTIV
Dabei seit: 22.06.2009
Ort: bln
Alter: -
Geschlecht: -
|
Verfasst So 10.11.2013 17:30
Titel
|
|
|
was duda vorschlägst is nichtsweiter als das shufflen der datenmenge.
|
|
|
|
|
qualidat
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst So 10.11.2013 21:08
Titel
|
|
|
DEKONSTRUKTIV hat geschrieben: | was duda vorschlägst is nichtsweiter als das shufflen der datenmenge. |
Ja, aber "shuffle" ist kein SQL-Befehl. Ich dachte, es ging um Namen aus bzw. in einer Datenbank ... habe wohl das Eingansposting nicht gründlich genug gelesen ...
|
|
|
|
|
remote
Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht:
|
Verfasst So 10.11.2013 21:44
Titel
|
|
|
qualidat hat geschrieben: | DEKONSTRUKTIV hat geschrieben: | was duda vorschlägst is nichtsweiter als das shufflen der datenmenge. |
Ja, aber "shuffle" ist kein SQL-Befehl. Ich dachte, es ging um Namen aus bzw. in einer Datenbank ... habe wohl das Eingansposting nicht gründlich genug gelesen ... |
Auch dann wäre es extrem ineffizient die Datenbank mit einer zusätzlichen Spalte aufzublähen. Das Generieren und Einfügen von zufälligen Werten ist teuer.
Ich habe aus Spaß an der Freude mal deinen Vorschlag umgesetzt und dem Array einen zweiten Wert zur Sortierung eingeimpft.
Für 5 Millionen Items braucht der Zweizeiler von m 3.5 Sekunden - das Sortieren mittels zusätzlichem Wert ganze 269.7 Sekunden (das sind mal bequeme 7700% mehr, vom ungleich höheren Speicherverbrauch ganz zu schweigen).
Wenn man das ganze über die Datenbank macht, dann auch eher mit einem ORDER BY RAND() als mit zusätzlichem Datenmüll. Langsamer dürfte es (zumindest bei MySQL) dennoch sein.
|
|
|
|
|
qualidat
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst So 10.11.2013 23:50
Titel
|
|
|
Zitat: | Für 5 Millionen Items braucht ... |
Ich hege keine Zweifel an der Richtigkeit deiner Tests, aber ich glaube, es ging nicht um 5 Millionen Leute, sondern bestenfalls um einige Hundert ...
Aber "order by random()" klingt echt clever, auf die Idee bin ich noch garnicht gekommen. Man lernt nie aus ...
|
|
|
|
|
xaos
Dabei seit: 06.10.2004
Ort: Kargath
Alter: -
Geschlecht: -
|
Verfasst Mo 11.11.2013 17:57
Titel
|
|
|
remote hat geschrieben: |
Wenn man das ganze über die Datenbank macht, dann auch eher mit einem ORDER BY RAND() als mit zusätzlichem Datenmüll. Langsamer dürfte es (zumindest bei MySQL) dennoch sein. |
qualidat hat geschrieben: |
Aber "order by random()" klingt echt clever, auf die Idee bin ich noch garnicht gekommen. Man lernt nie aus ... |
MySQL kopiert für den Spaß wohl die komplette Tabelle, ergänzt um eine Spalte für die Zufallsnummer und sortiert anschliessend nach dieser. Klingt weder clever noch performant...
|
|
|
|
|
DEKONSTRUKTIV
Dabei seit: 22.06.2009
Ort: bln
Alter: -
Geschlecht: -
|
Verfasst Mo 11.11.2013 18:05
Titel
|
|
|
xaos hat geschrieben: | Klingt weder clever noch performant... |
loadbalancing für arme, wenn der mysqld auf ner anderen maschine läuft als der httpd...
|
|
|
|
|
|
|
|
Ähnliche Themen |
[C4D] Diamanten zufällig ein Wort bilden lassen
|
|