Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ORDER BY RAND() alternativa


Se você tiver uma coluna de ID, é melhor fazer:
-- 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;

A lógica de selecionar o número de ID aleatório pode ser movida para o nível do aplicativo.
SELECT * FROM table ORDER BY RAND LIMIT 40

é muito ineficiente porque o MySQL processará TODOS os registros na tabela realizando uma varredura completa da tabela em todas as linhas, ordenando-as aleatoriamente.