sql >> Databáze >  >> RDS >> Mysql

Nejrychlejší způsob, jak vygenerovat 11 000 000 jedinečných ID

Pokud vytvoříte následující tabulku:

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

Poté zadejte tyto tři dotazy jeden po druhém:

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

Třetí dotaz je zaručený vrátit jedinečné pořadové číslo. Tato záruka platí i v případě, že máte k databázi připojeny desítky různých klientských programů. To je krása AUTO_INCREMENT.

Namísto pouhého generování jedenácti milionů těchto sekvenčních čísel předem můžete tyto dotazy SQL použít k získání jedinečného sekvenčního čísla, kdykoli je budete potřebovat.

Pokud se musíte zabalit do pořadového čísla 12 milionů, můžete místo toho použít tyto dotazy.

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

Trik je v tom použít automatické zvýšení pořadového čísla pro jedinečnost, ale také odstranit řádky v tabulce, aby nezabírala spoustu místa.

Všimněte si, že pořadové číslo LAST_INSERT_ID() můžete použít také pro jiné účely, jako je například.

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. Aktualizujte více řádků pomocí známých klíčů bez vkládání nových řádků, pokud jsou nalezeny neexistující klíče

  2. Funkce SQL Row_Number() v klauzuli Where

  3. Bezplatné metody pro opravu poškozené databáze MySQL

  4. Historie dotazů na pracovní ploše MySql (naposledy provedený dotaz / dotazy), tj. vytvořit / upravit tabulku, vybrat, vložit aktualizační dotazy