Mysql不规则Auto_Increment递增
Mysql Irregular Auto_Increment increment
table如下。有趣的是,Auto_Increment 的 'id' 列正在不规则地增加并且很高。
SELECT * FROM `numbers_api` ORDER BY `id` DESC
id | email | name
--------------------------------------------
562984864 | bla[at]blabla.com | test
562956541 | bla1[at]blabla.com | test1
562944637 | bla2[at]blabla.com | test2
562944634 | bla3[at]blabla.com | test3
Table id 的结构:
我正在对这个 table 执行插入操作,如下所示(循环中的 $Querys[]):
$Querys[] = "INSERT IGNORE INTO numbers_api (email, name) VALUES ('" . $customerEmail . "', '" . $name . "');";
$this->db->query(implode("\r\n", $Querys));
email
、name
或它们的组合可能有唯一索引。
每次您尝试插入一行时,都会创建一个 ID。但只有当 INSERT IGNORE
成功时,即没有违反唯一约束时,才会使用此 ID。
有
create table numbers_api (id int auto_increment, email varchar(100), name varchar(100));
create unique index idx on table numbers_api (email, name);
INSERT IGNORE INTO numbers_api (email, name) VALUES ('A', 'A');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('A', 'A');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('B', 'B');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('A', 'A');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('B', 'B');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('C', 'C');
table 将有三行:
id
email
name
1
A
A
3
B
B
6
C
C
因为在 A|A 上的第二次插入失败,因此浪费了 ID 2,并且在插入第一个 B|B 后尝试插入 A|A 和 B|B 也失败,浪费了 ID 4 和 5。
演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ca09b5c09ed10116bf27d83935f3e608
table如下。有趣的是,Auto_Increment 的 'id' 列正在不规则地增加并且很高。
SELECT * FROM `numbers_api` ORDER BY `id` DESC
id | email | name
--------------------------------------------
562984864 | bla[at]blabla.com | test
562956541 | bla1[at]blabla.com | test1
562944637 | bla2[at]blabla.com | test2
562944634 | bla3[at]blabla.com | test3
Table id 的结构:
我正在对这个 table 执行插入操作,如下所示(循环中的 $Querys[]):
$Querys[] = "INSERT IGNORE INTO numbers_api (email, name) VALUES ('" . $customerEmail . "', '" . $name . "');";
$this->db->query(implode("\r\n", $Querys));
email
、name
或它们的组合可能有唯一索引。
每次您尝试插入一行时,都会创建一个 ID。但只有当 INSERT IGNORE
成功时,即没有违反唯一约束时,才会使用此 ID。
有
create table numbers_api (id int auto_increment, email varchar(100), name varchar(100));
create unique index idx on table numbers_api (email, name);
INSERT IGNORE INTO numbers_api (email, name) VALUES ('A', 'A');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('A', 'A');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('B', 'B');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('A', 'A');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('B', 'B');
INSERT IGNORE INTO numbers_api (email, name) VALUES ('C', 'C');
table 将有三行:
id | name | |
---|---|---|
1 | A | A |
3 | B | B |
6 | C | C |
因为在 A|A 上的第二次插入失败,因此浪费了 ID 2,并且在插入第一个 B|B 后尝试插入 A|A 和 B|B 也失败,浪费了 ID 4 和 5。
演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ca09b5c09ed10116bf27d83935f3e608