
Zufälligen Datensatz auswählen
Manchmal möchte man einen oder mehrere Datensätze einer Tabelle zufällig auswählen. Bei normalen Sortierungen kann man einen Index zur Bschleunigung setzen, aber bei RAND() funktioniert das nicht. Das kann beispielsweise sein, wenn viele Artikel zur Wahl stehen und allen mal die Chance gegeben werden soll auf der Startseite zu erscheinen. Also können wir ja einfach folgende Abfrage ausführen:
SELECT artikelname FROM tabelle ORDER BY RAND() LIMIT 10;
Das gibt uns 10 Datensätze zurück, die zufällig ausgewählt wurden. Allerdings dauert es eine halbe Ewigkeit, weil für jeden Datensatz der Tabelle eine Zufallszahl erstellt werden muss. Eine Zufallszahl zu erstellen dauert zwar nicht lange – wenn man allerdings mehrere Tausend Einträge in der DB hat, summiert sich das schnell zu einigen Sekunden. Wie können wir das Problem nun umgehen? Weiterlesen >
Schlagwörter: MySQL, order-by, performance, rand