sql >> Databáze >  >> RDS >> Mysql

Generování jedinečných kódů v PHP/MySQL?

Pokud potřebujete asi 10 milionů jedinečných klíčů (například), nejlepším přístupem je vybrat klíčový prostor, který je exponenciálně větší, a začít náhodně generovat. Přečtěte si o narozeninovém paradoxu -- to je hlavní věc, které byste se měli obávat. Pokud chcete 2^n jedinečných a bezpečných klíčů, ujistěte se, že existují alespoň 2^(2 * n) možných hodnot. Zde je hrubý algoritmus O(n log n):

  • Použijte klíčový prostor alespoň 2^50 (tedy jinými slovy povolte 2^50 možných jedinečných hodnot) a v celé datové sadě nedojde k téměř žádným kolizím – a kdokoli brutálně vynucuje vaše klíče, mají přibližně stejnou šanci na získání klíče, pokud zkusí 2^25 z nich.
  • vygenerujte libovolný počet náhodných čísel, kolik potřebujete
  • indexovat databázi na vašem klíči (toto je krok O(n lg n):řazení)
  • procházet DB a iterovat celou datovou sadu, aby se ořízly duplikáty (pseudokód níže)
  • Smažte duplicitní řádky a máte hotovo.

Pseudokód:

$last = null;
while ($current = getnext()) {
    if ($last == $current) {
        push($toDelete, $current);
    }
    $last = $current;
}


  1. Vložte do tabulky MySQL nebo aktualizujte, pokud existuje

  2. jdbc4.MySQLSyntaxErrorException:Tabulka v databázi neexistuje

  3. vypočítat Row Wise Sum - SQL server

  4. Potřebujete dotaz na odlišnou kombinaci dvou polí spolu s počtem, že se vyskytuje odlišná kombinace