Acho que a solução mais rápida é
select * from table where rand() <= .3
Aqui é porque eu acho que isso deve fazer o trabalho.
- Ele criará um número aleatório para cada linha. O número está entre 0 e 1
- Avalia se deve exibir essa linha se o número gerado estiver entre 0 e 0,3 (30%).
Isso pressupõe que rand() está gerando números em uma distribuição uniforme. É a maneira mais rápida de fazer isso.
Eu vi que alguém havia recomendado essa solução e eles foram derrubados sem provas .. aqui está o que eu diria a isso -
- Este é O(n), mas não é necessário ordenar, por isso é mais rápido que o O(n lg n)
-
mysql é muito capaz de gerar números aleatórios para cada linha. Tente isso -
selecione rand() de INFORMATION_SCHEMA.TABLES limite 10;
Como o banco de dados em questão é mySQL, esta é a solução certa.