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

Amostras aleatórias simples de um banco de dados SQL


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.