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

Gerando códigos exclusivos em PHP/MySQL?


Se você precisar de cerca de 10 milhões de chaves exclusivas (por exemplo), a melhor abordagem é escolher um espaço de chave que seja exponencialmente maior e começar a gerar aleatoriamente. Leia sobre o Paradoxo do aniversário - é a principal coisa que você deve se preocupar. Se você quiser 2^n chaves exclusivas e seguras, certifique-se de que haja pelo menos 2^(2 * n) valores possíveis. Aqui está um algoritmo O(n log n):
  • Use um espaço de chave de pelo menos 2^50 (portanto, em outras palavras, permita 2^50 valores únicos possíveis), e você quase não terá colisões em todo o seu conjunto de dados - e qualquer força bruta em suas chaves terá têm chances iguais de conseguir uma chave se tentarem 2^25 delas.
  • gerar quantos números aleatórios você precisar
  • indexe o banco de dados em sua chave (este é o passo O(n lg n):a classificação)
  • página através do banco de dados e iterar em todo o conjunto de dados para cortar duplicatas (pseudocódigo abaixo)
  • Exclua as linhas duplicadas e pronto.

Pseudo-código:
$last = null;
while ($current = getnext()) {
    if ($last == $current) {
        push($toDelete, $current);
    }
    $last = $current;
}