我的任务是调整一个非常古老的MySQL数据库,以便在另一个程序中使用它的数据,我找到了一些具有这种结构的非常大的表(数千行):
CREATE TABLE `foo` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(200) NOT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `foo_Name_Idx` (`Name`),
UNIQUE KEY `Name` (`Name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
这些明显重复的独特指数的原因是什么?演出内容吗?自动表创建错误?
答案 0 :(得分:2)
这样的冗余索引没有任何好处。如果为它们指定不同的名称,MySQL允许您创建它们,但应该避免使用它们。
如果要查找数据库中的所有冗余索引,我建议您使用以下工具之一:
安装完成后,您可以在命令行运行它,如下所示:
pt-duplicate-key-checker
安装完成后,您可以这样查询:
SELECT * FROM common_schema.redundant_keys\G