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

Най-бързият начин за генериране на 11 000 000 уникални идентификатори

Ако създадете следната таблица:

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

След това задайте тези три заявки една след друга:

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

Третата заявка е гарантирана за да върне уникален пореден номер. Тази гаранция е валидна дори ако имате десетки различни клиентски програми, свързани към вашата база данни. Това е красотата на AUTO_INCREMENT.

Вместо просто да генерирате единадесет милиона от тези последователни номера предварително, можете да използвате тези SQL заявки, за да получите уникален пореден номер, когато имате нужда от него.

Ако трябва да преминете към пореден номер 12 милиона, можете да използвате тези заявки вместо това.

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

Номерът тук е да използвате пореден номер с автоматично увеличение за уникалност, но също така да изтриете редовете в таблицата, така че да не поглъща много място.

Имайте предвид, че можете също да използвате поредния номер на LAST_INSERT_ID() за други цели, като например.

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. Конкатенация на множество редове в SQL

  2. Как да използвам една и съща MySQL връзка(и) за цялото си приложение Node.js?

  3. MySQL JOIN с LIMIT 1 върху обединена маса

  4. MySQL - Използване на JOIN и WHERE за определяне на средните часове

  5. SQL как да извадите резултатен ред 1 от ред 2, ред 2 от ред 3