![](/img/trans.png)
[英]How to change the auto_increment field in a table trigger in MySQL?
[英]How to add auto_increment field to a table with huge data?
假设有一个表table_test
,表中有大约 10M 行数据。 我想添加一个像key
这样的 auto_increment 字段来做一些分页工作。 使它工作的最佳方法是什么?
表结构如下:
# table_test
+---------------------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------------------------+--------------+------+-----+---------+-------+
| ad_id | int(64) | NO | PRI | NULL | |
| account_id | varchar(64) | YES | MUL | NULL | |
| country | varchar(64) | NO | PRI | NULL | |
| image_hash | varchar(64) | YES | | NULL | |
+---------------------------------------+--------------+------+-----+---------+-------+
| table_test | CREATE TABLE `table_test` (
`ad_id` int(11) NOT NULL,
`account_id` varchar(64) DEFAULT NULL,
`country` varchar(64) NOT NULL,
`image_hash` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`,`country`),
KEY `account_id` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
更新:
将id
更改为ad_id
,这里的ad_id
是与字段country
聚集的唯一键,因此ad_id
本身可能会重复。
我会去:
-- drop PK as AUTO increment demands being the PK
ALTER TABLE table_test DROP PRIMARY KEY;
-- add Id as PK and the first column
ALTER TABLE table_test ADD Id INT AUTO_INCREMENT PRIMARY KEY FIRST;
-- make sure the old PK is unique
ALTER TABLE table_test ADD CONSTRAINT table_test_uk UNIQUE (ad_id, country);
也许:
CREATE TABLE table_test2 LIKE table_test;
ALTER TABLE table_test2 DROP PRIMARY KEY;
-- add Id as PK and the first column
ALTER TABLE table_test2 ADD Id INT AUTO_INCREMENT PRIMARY KEY FIRST;
-- make sure the old PK is unique
ALTER TABLE table_test2 ADD CONSTRAINT table_test2_uk UNIQUE (ad_id, country);
INSERT INTO table_test2(ad_id, account_id, country, image_hash)
SELECT ad_id, account_id, country, image_hash FROM table_test;
DROP TABLE table_test;
RENAME TABLE table_test2 TO table_test;
只是改变你的桌子
ALTER TABLE table_test CHANGE id id INT(11) NOT NULL AUTO_INCREMENT;
您已经可以使用 'id' 列作为自动增量(除非您使用 UUID 或其他一些策略)。
您可以查看以下有关如何更改表以向表添加自动增量的答案: ALTER table - added AUTOINCREMENT in MySQL
编辑:如果您希望添加一个将自动递增的新列,您可以使用以下内容:ALTER TABLE table_test ADD id INT AUTO_INCREMENT;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.