worki2k1
Erfahrenes Mitglied
Hab hier noch eine interessante Variante, die auf der ersten Blick nach mehr Arbeit aussieht, aber für MySQL schneller is.
Zuerst erstellst du eine neue Spalte mit dem Namen "random" in der Tabelle.
Danach dieses Feld indizieren
Jetzt jedem Feld in der Datenbank einen Wert zuweisen
Die Auswahl zufälliger Datensätze erfolgt nun über:
Achtung
Zuerst erstellst du eine neue Spalte mit dem Namen "random" in der Tabelle.
Code:
ALTER TABLE table ADD random DOUBLE
Code:
ALTER TABLE table ADD INDEX (random)
Code:
UPDATE table SET random = RAND()
Die Auswahl zufälliger Datensätze erfolgt nun über:
Code:
SELECT * FROM table WHERE random > RAND() ORDER BY random LIMIT 1
Achtung
- Tabellenoperationen sind dadurch langsamer wegen dem Index
- Es kann nur ein Datensatz zufällig ausgewählt werden.
- Beim einfügen neuer Datensätze darf der Zufallswert nicht vergessen werden.