是否可以在完整的mysql表中添加自动增量主索引列?

Auf*_*ind 3 mysql add primary-key

假设这个表有近5 000 000行

CREATE TABLE `author2book` (
  `author_id` int(11) NOT NULL,
  `book_id` int(11) NOT NULL,
  KEY `author_id_INDEX` (`author_id`),
  KEY `paper_id_INDEX` (`book_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Run Code Online (Sandbox Code Playgroud)

是有可能添加主索引列idautoincrement作为首位?我期待这样的事情:

CREATE TABLE `author2book` (
  `id` int(11) NOT NULL AUTO_INCREMENT,  <<<<  This is what I try to achieve!
  `author_id` int(11) NOT NULL,
  `book_id` int(11) NOT NULL,
  KEY `author_id_INDEX` (`author_id`),
  KEY `paper_id_INDEX` (`book_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Run Code Online (Sandbox Code Playgroud)

这可能吗?

编辑:我应该提一下,我想要填充添加的列.

joe*_*rdi 5

您可以使用ALTER TABLE在一个命令中添加列和索引.即:

ALTER TABLE author2book ADD id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅ALTER TABLEMySQL文档.

  • Aufwind,是的,这将创建索引(主键始终是索引).你可以做`SHOW INDEXES FROM author2book;`来看看.绝对是一个好主意,首先在表的副本上运行,看看你的5000000记录需要多长时间. (2认同)