Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So ordnen Sie die Ergebnisse einer Abfrage zufällig an und wählen zufällige Zeilen aus. (MySQL)

Wenn es Ihnen nichts ausmacht, die Komplexität der Einfüge-/Aktualisierungs-/Löschvorgänge für die Geschwindigkeit beim Auswählen zu opfern, können Sie jederzeit eine Sequenznummer hinzufügen und sicherstellen, dass sie beim Einfügen/Aktualisieren/Löschen beibehalten wird. Wählen Sie dann bei jeder Auswahl einfach aus auf eine oder mehrere Zufallszahlen aus diesem Bereich. Wenn die Spalte "sequence" indiziert ist, ist das meiner Meinung nach so schnell wie möglich.

Eine Alternative ist "Shuffling". Fügen Sie eine Sequenzspalte hinzu, fügen Sie Zufallswerte in diese Spalte ein, und ordnen Sie bei jeder Auswahl von Datensätzen nach der Sequenzspalte und aktualisieren Sie die ausgewählten Datensatzsequenzen auf neue Zufallswerte. Das Update sollte sich nur auf die Datensätze auswirken, die Sie abgerufen haben, also nicht zu kostspielig sein ... aber es kann sich lohnen, einige Tests mit Ihrem Datensatz durchzuführen.

Das mag ziemlich böse gesagt werden, aber ich sage es trotzdem ... gibt es jemals eine Notwendigkeit, "zufällige" Daten anzuzeigen? Wenn Sie versuchen, zufällige Datensätze anzuzeigen, machen Sie möglicherweise etwas falsch.

Denken Sie an Amazon ... zeigen sie zufällige Produkte oder beliebte Produkte und "Dinge, die andere Leute gekauft haben, als sie sich das angesehen haben". Gibt Ihnen SO rechts von hier eine Liste zufälliger Fragen oder eine Liste verwandter Fragen? Nur ein paar Denkanstöße.