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

ORDINA PER RAND() alternativa

Se hai una colonna ID è meglio fare un:

-- create a variable to hold the random number
SET @rownum := SELECT count(*) FROM table;
SET @row := (SELECT CEIL((rand() * @rownum));

-- use the random number to select on the id column
SELECT * from tablle WHERE id = @row;

La logica di selezione del numero ID casuale può essere spostata a livello di applicazione.

SELECT * FROM table ORDER BY RAND LIMIT 40

è molto inefficiente perché MySQL elaborerà TUTTI i record nella tabella eseguendo una scansione completa della tabella su tutte le righe, ordinandole in modo casuale.