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

Najszybszy sposób na wygenerowanie 11 000 000 unikalnych identyfikatorów

Jeśli utworzysz następującą tabelę:

 CREATE TABLE sequence (
     sequence_id BIGINT NOT NULL AUTO_INCREMENT,
     PRIMARY KEY (`sequence_id`)
) 

Następnie zadaj te trzy zapytania jedno po drugim:

INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() AS sequence;

Trzecie zapytanie jest gwarantowane aby zwrócić unikalny numer sekwencyjny. Ta gwarancja obowiązuje nawet wtedy, gdy z bazą danych są połączone dziesiątki różnych programów klienckich. Na tym polega piękno AUTO_INCREMENT.

Zamiast po prostu generować jedenaście milionów tych numerów sekwencyjnych z góry, możesz użyć tych zapytań SQL, aby uzyskać unikalny numer sekwencyjny, kiedy tylko tego potrzebujesz.

Jeśli musisz zawinąć do numeru sekwencyjnego 12 milionów, możesz zamiast tego użyć tych zapytań.

INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
SELECT LAST_INSERT_ID() MOD 12000000 AS sequence;

Sztuczka polega na tym, aby użyć numeru sekwencyjnego auto-inkrementacji w celu zapewnienia niepowtarzalności, ale także usunąć wiersze w tabeli, aby nie pochłonęła dużo miejsca.

Zauważ, że możesz również użyć numeru sekwencyjnego LAST_INSERT_ID() do innych celów, jak na przykład.

INSERT INTO sequence () VALUES ();
DELETE FROM sequence WHERE sequence_id < LAST_INSERT_ID();
INSERT INTO user (userid, username, phone) 
          VALUES (LAST_INSERT_ID() MOD 12000000, 'Joe', '800-555-1212');
SELECT LAST_INSERT_ID() MOD 12000000 AS sequence;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie danych do wielu tabel PHP MySQL

  2. Mysql AVG, aby zignorować zero

  3. Wyszukiwanie pełnotekstowe z InnoDB w MySQL

  4. Facebook PHP SDK - Przechowuj dane użytkownika w bazie danych MYSql

  5. jaka jest różnica między GROUP BY i ORDER BY w sql