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

MySQL seleziona velocemente 10 righe casuali da 600.000 righe

Un ottimo post che gestisce diversi casi, da semplici, a lacune, a non uniformi con lacune.

http://jan.kneschke.de/projects/mysql/order- per randa/

Per i casi più generali, ecco come farlo:

SELECT name
  FROM random AS r1 JOIN
       (SELECT CEIL(RAND() *
                     (SELECT MAX(id)
                        FROM random)) AS id)
        AS r2
 WHERE r1.id >= r2.id
 ORDER BY r1.id ASC
 LIMIT 1

Ciò presuppone che la distribuzione degli id ​​sia uguale e che possano esserci delle lacune nell'elenco degli id. Consulta l'articolo per esempi più avanzati