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

Randomisierung großer Datensätze

Sie könnten dies mit etwas Denormalisierung lösen:

  • Erstellen Sie eine sekundäre Tabelle, die dieselben Pkeys und Status wie Ihre Datentabelle enthält
  • Fügen Sie eine Statusgruppenspalte hinzu und füllen Sie sie aus, die eine Art Unterschlüssel ist, den Sie selbst automatisch nummerieren (auf 1 basierende automatische Erhöhung relativ zu einem einzelnen Status)

Wenn Sie nicht filtern müssen, können Sie Randnummern auf dem pkey generieren, wie Sie oben erwähnt haben. Wenn Sie filtern müssen, generieren Sie Randwerte für die StatusPkeys des bestimmten Status, an dem Sie interessiert sind.

Es gibt mehrere Möglichkeiten, diese Tabelle zu erstellen. Sie könnten ein Verfahren haben, das Sie in einem Intervall ausführen, oder Sie könnten es live durchführen. Letzteres wäre allerdings ein Performance-Hit, da die Berechnung des StatusPkeys teuer werden könnte.