sql >> Database teknologi >  >> RDS >> Mysql

hurtigt valg af en tilfældig række fra en stor tabel i mysql

Grib alle id'erne, vælg et tilfældigt fra det, og hent hele rækken.

Hvis du ved, at id'erne er sekventielle uden huller, kan du bare få fat i max og beregne et tilfældigt id.

Hvis der er huller hist og her, men for det meste sekventielle værdier, og du er ligeglad med en lidt skæv tilfældighed, så tag fat i max-værdien, beregn et id og vælg den første række med et id, der er lig med eller over det, du har beregnet. Årsagen til skævheden er, at id'er, der følger sådanne huller, vil have en større chance for at blive valgt end dem, der følger et andet id.

Hvis du bestiller tilfældigt, vil du have en frygtelig bordscanning på dine hænder, og ordet hurtig gælder ikke for en sådan løsning.

Gør det ikke, og du bør heller ikke bestille efter en GUID, det har samme problem.



  1. MySQL SELECT stigningstæller

  2. Kan ikke indsætte Unicode ved hjælp af cx-Oracle

  3. Er der nogen funktion i oracle, der ligner group_concat i mysql?

  4. Vælg uden en FROM-klausul i Oracle