在对MySQL进行测试期间,我希望将多个索引添加到一个超过5000万行的表中。MySQL是否支持同时为不同的列添加2个索引?如果是,我是否需要打开两个会话,或者可以通过一个命令来完成?
发布于 2015-06-06 00:08:51
是。但是..。
在旧版本中,使用
ALTER TABLE tbl
ADD INDEX(...),
ADD INDEX(...);因此,它将在一次传递中完成所有工作。
在较新的版本中,ALGORITHM=INPLACE使工作可以在InnoDB表的“后台”完成,因此对其他处理的影响较小。但是,为了获得INPLACE处理,您可能需要单独添加每个索引。请查看手册中的特定语法;自从我写下这个答案以来,6+几年来发生了很多变化。此外,MySQL和MariaDB也不是步调一致的。
Ref manual列出了一些注意事项,例如处理PRIMARY KEY。
发布于 2019-02-12 16:44:51
在创建表的时候创建它是很有用的,可以这样做:
CREATE TABLE name_of_a_new_table (col1 variable_type_1, col2 variable_type_2,
INDEX idx_col1 (col1), INDEX idx_col2 (col2));发布于 2015-06-04 02:01:34
你看过MySQL手册了吗?InnoDB支持快速创建索引,也许这正是您想要的:
https://dev.mysql.com/doc/refman/5.5/en/innodb-create-index.html
https://stackoverflow.com/questions/30627258
复制相似问题