Obtendo linhas aleatórias sem o uso de ORDER BY RAND()

Banco de Dados
Enviado por Eclesiastes em Qua, 12/07/2006 - 11:19.Banco de Dados

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.


Enviado por Guilherme Pinheiro (não verificado(a)) em Dom, 25/04/2010 - 16:27.

Porque usar aquele codigo imenso, sendo que se pode fazer EXATAMENTE a mesma coisa usando três palavras "order by rand()".
Sou do tipo que importa é o resultado final.. nao como se faz... Mas nesse caso... a simplicidade é tudo!