Utilizando NEWID para gerar resultados randomicos no SQL

0

Recentemente encontrei uma forma muito simples de gerar resultados de forma sorteada no SQL SERVER.

Veja:

Select * from Produtos
order by NEWID() 

Ao ordenar pela função NEWID() o SQL retorna registros de forma aleatória de maneira rápida e eficiente.

Mas o que mais me deixou curioso, era como a consulta era gerada na mesma performance em modo geral, de uma consulta comum. Desta vez tive que recorrer à teoria.

De forma reduzida funciona do seguinte modo:

  1. O SQL seleciona por padrão o order by (ID), retornando os identificadores da tabela por padrão.
  2. O SQL gera um novo ID para cada registro de forma randômica utilizando o padrão GUID.
  3. O SQL faz a consulta padrão ordenando por ID, só que os registros estarão com os ID modificados, por isto o resultado vem de forma sorteada.

Interessante não é mesmo?

Bom fica a dica para quem um dia precisar!

Abraços a todos 🙂

 

Compartilhe.