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

schnelle Auswahl einer zufälligen Zeile aus einer großen Tabelle in MySQL

Ergreifen Sie alle IDs, wählen Sie eine zufällige aus und rufen Sie die vollständige Zeile ab.

Wenn Sie wissen, dass die IDs sequenziell ohne Löcher sind, können Sie einfach das Maximum nehmen und eine zufällige ID berechnen.

Wenn es hier und da Löcher gibt, aber hauptsächlich sequentielle Werte, und Sie sich nicht um eine leicht verzerrte Zufälligkeit kümmern, nehmen Sie den maximalen Wert, berechnen Sie eine ID und wählen Sie die erste Zeile mit einer ID aus, die gleich oder höher ist als die von Ihnen berechnete. Der Grund für die Verzerrung ist, dass Ids, die solchen Löchern folgen, eine höhere Wahrscheinlichkeit haben, ausgewählt zu werden, als solche, die einem anderen Id folgen.

Wenn Sie nach dem Zufallsprinzip bestellen, werden Sie einen schrecklichen Tabellenscan auf Ihren Händen haben und das Wort schnell gilt nicht für eine solche Lösung.

Tun Sie das nicht, und Sie sollten auch nicht nach einer GUID bestellen, das hat das gleiche Problem.