Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Generowanie unikalnych kodów w PHP/MySQL?

Jeśli potrzebujesz około 10 milionów unikalnych kluczy (na przykład), najlepszym rozwiązaniem jest wybranie wykładniczo większej przestrzeni kluczy i rozpoczęcie losowego generowania. Przeczytaj o paradoksie urodzinowym -- to główna rzecz, o którą powinieneś się martwić. Jeśli chcesz mieć 2^n unikalnych i bezpiecznych kluczy, upewnij się, że istnieje co najmniej 2^(2 * n) możliwych wartości. Oto przybliżony algorytm O(n log n):

  • Użyj przestrzeni klucza wynoszącej co najmniej 2^50 (innymi słowy, zezwól na 2^50 możliwych unikalnych wartości), a w całym zbiorze danych nie wystąpią prawie żadne kolizje — a każdy brutalny wymuszający mają równe szanse na zdobycie klucza, jeśli spróbują 2^25 z nich.
  • wygeneruj tyle liczb losowych, ile potrzebujesz
  • indeksuj bazę danych na swoim kluczu (jest to krok O(n lg n):sortowanie)
  • przeglądać bazę danych i iterować po całym zestawie danych, aby przyciąć duplikaty (pseudokod poniżej)
  • Usuń zduplikowane wiersze i gotowe.

Pseudokod:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nodejs mysql bulk INSERT na DUPLICATE KEY UPDATE

  2. Jak ustawić parametry połączenia za pomocą Entity Framework

  3. Brak zmapowanych encji Doctrine ORM zgodnie z obecną konfiguracją

  4. Jak sprawić, by MySQL Connector/J działał na Androidzie?

  5. Zapytanie MySQL do zliczania unikalnych domen z pola adresu e-mail