sql >> Base de Datos >  >> RDS >> Mysql

La forma más rápida de generar 11 000 000 identificaciones únicas

Si crea la siguiente tabla:

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

Luego emita estas tres consultas una tras otra:

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

La tercera consulta está garantizada para devolver un número de secuencia único. Esta garantía se mantiene incluso si tiene docenas de diferentes programas cliente conectados a su base de datos. Esa es la belleza de AUTO_INCREMENT.

En lugar de simplemente generar once millones de estos números de secuencia por adelantado, puede usar estas consultas SQL para obtener un número de secuencia único siempre que lo necesite.

Si debe ajustarse al número de secuencia 12 millones, puede usar estas consultas en su lugar.

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

El truco aquí es usar un número de secuencia de incremento automático para la unicidad, pero también eliminar las filas en la tabla para que no ocupe mucho espacio.

Tenga en cuenta que también puede usar el número de secuencia de LAST_INSERT_ID() para otros fines, como por ejemplo.

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;