在MySQL测试期间,我想将多个索引添加到一个行超过5000万的表中。 MySQL是否支持同时为不同的列添加2个索引?如果是,我是否需要打开2个会话,或者可以通过一个命令完成?
答案 0 :(得分:9)
是。但...
在旧版本中,请使用
ALTER TABLE tbl
ADD INDEX(...),
ADD INDEX(...);
这样它就可以一次性完成所有工作。
在较新的版本中,ALGORITHM=INPLACE
使得工作可以在"背景"对于InnoDB表,从而对其他处理的影响较小。但是,要获得INPLACE
处理,您可能需要单独添加每个索引。
Ref manual列出了一些警告,例如处理PRIMARY KEY
。
答案 1 :(得分:1)
在创建表时创建它很有用,可以这样做:
CREATE TABLE name_of_a_new_table (col1 variable_type_1, col2 variable_type_2,
INDEX idx_col1 (col1), INDEX idx_col2 (col2));
答案 2 :(得分:0)
您检查过MySQL手册吗? InnoDB支持快速索引创建,也许它正是您所寻找的:
https://dev.mysql.com/doc/refman/5.5/en/innodb-create-index.html