Você sabe como trabalha o ORDER BY RAND() no MySQL?
Qual é o desempenho dele em uma tabela bem populada?
Para responder a essas perguntas deixo um link para poderem entender como funciona essa forma genérica porém eficiente de ordenação.
O texto está no link abaixo:
http://jan.kneschke.de/projects/mysql/order-by-rand/
No final do texto você pode acompanhar o resultado "assustador" de um BENCHMARK.
E para concluir ...
Uma query usando ORDER BY RAND(), o MySQL irá trabalhar da seguinte forma:
- Using temporary
- Para resolver a consulta, o MySQL precisará criar uma tabela temporária para armazenar o resultado. Isto acontece normalmente se você fizer um ORDER BY em um conjunto de colunas diferentes das quais você fez um GROUP BY.
- Using filesort
- O MySQL precisará fazer uma passada extra para descobrir como recuperar os registros na ordem de classificação. A classificação é feita indo através de todos os registros de acordo com join type e armazenar a chave de ordenação mais o ponteiro para o registro para todos os registros que combinarem com o WHERE. Então as chaves são classificadas. Finalmente os registros são recuperados na ordem de classificação.