Mysql
 sql >> база данни >  >> RDS >> Mysql

Генериране на уникални кодове в PHP/MySQL?

Ако имате нужда от около 10 милиона уникални ключове (например), най-добрият подход е да изберете ключово пространство, което е експоненциално по-голямо, и да започнете произволно генериране. Прочетете за парадокса на рождения ден -- това е основното нещо, за което трябва да се тревожите. Ако искате 2^n уникални и сигурни ключа, уверете се, че има поне 2^(2 * n) възможни стойности. Ето един груб алгоритъм O(n log n):

  • Използвайте ключово пространство от поне 2^50 (така че, с други думи, позволете 2^50 възможни уникални стойности) и едва ли ще имате сблъсъци в целия си набор от данни – и всеки, който грубо налага вашите ключове, ще имат приблизително равни шансове да получат ключ, ако опитат 2^25 от тях.
  • генерирайте колкото се може повече случайни числа
  • индексирайте базата данни на вашия ключ (това е стъпката O(n lg n):сортирането)
  • преглеждайте базата данни и итерирайте целия набор от данни, за да изрежете дубликати (псевдокод по-долу)
  • Изтрийте дублиращите се редове и сте готови.

Псевдокод:

$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. JSON_QUOTE() – Как да избягвате символи в низове, използвани като JSON стойности в MySQL

  2. Как мога да получа непразен набор от резултати, когато използвам select, group by и count?

  3. Защо Rails игнорира Rollback в (псевдо)вложена транзакция?

  4. MYSQL цикъл на курсора, изпълнява един допълнителен кръг, защо?

  5. Грешка в базата данни на Codeigniter:1064 Използване на MySQL и може би някаква грешка в конфигурацията на сесията