我需要重命名fk约束(删除所有fk,创建新的),但是mysql(cuz innodb引擎)为这些约束创建了索引。我需要手动删除索引吗?否则会导致问题?请,有人给我描述一下这一点。
cnwbcb6i1#
它不会导致问题。添加fk应该会发现已经有足够的索引,而不是添加第二个索引。即使它添加了一个冗余索引,也不会造成什么危害。我想知道——你为什么关心约束名是什么?来自5.6文档:“对于ALTERTABLE,与CREATETABLE不同,add外键忽略索引名称(如果给定),并使用自动生成的外键名称。作为一种解决方法,包括constraint子句以指定外键名称: ADD CONSTRAINT name FOREIGN KEY (....) .. “和”alter table支持在同一alter table语句中添加和删除外键。。。算法=就地但不用于alter table。。。算法=复制。“我要说的是 ALTER 如果将表的所有更改都放到一条语句中,通常运行得更快。但是 DROP + ADD 是不允许的 COPY 案例。
ADD CONSTRAINT name FOREIGN KEY (....) ..
ALTER
DROP
ADD
COPY
1条答案
按热度按时间cnwbcb6i1#
它不会导致问题。
添加fk应该会发现已经有足够的索引,而不是添加第二个索引。即使它添加了一个冗余索引,也不会造成什么危害。
我想知道——你为什么关心约束名是什么?
来自5.6文档:“对于ALTERTABLE,与CREATETABLE不同,add外键忽略索引名称(如果给定),并使用自动生成的外键名称。作为一种解决方法,包括constraint子句以指定外键名称:
ADD CONSTRAINT name FOREIGN KEY (....) ..
“和”alter table支持在同一alter table语句中添加和删除外键。。。算法=就地但不用于alter table。。。算法=复制。“我要说的是
ALTER
如果将表的所有更改都放到一条语句中,通常运行得更快。但是DROP
+ADD
是不允许的COPY
案例。