dotancohen Asked: 2014-01-08 13:19:56 +0800 CST2014-01-08 13:19:56 +0800 CST 2014-01-08 13:19:56 +0800 CST 如果显式 KEY 被 UNIQUE KEY 覆盖,它是否多余? 772 我正在审核我在几周内开发的应用程序。我注意到了这一点CREATE TABLE: UNIQUE KEY `baz_3` (`baz`,`foo`,`bar`), KEY `baz` (`baz`), KEY正如我认为的那样,显式是多余的吗?我只是想先确定DROP一下。从我读过的内容来看,我确实相信 UNIQUE KEY当应用程序执行时,它将充当索引,WHERE baz='something'但 MySQL 似乎非常复杂,我发现首先在这里询问是明智的。 mysql index 1 个回答 Voted Best Answer RolandoMySQLDBA 2014-01-08T13:22:16+08:002014-01-08T13:22:16+08:00 是的,您可以删除它,因为baz和baz_3具有相同的前导列。这种情况称为具有冗余索引。 但是,如果表是 InnoDB,请注意该键baz未用于支持外键约束。请参阅我的帖子我有重复的键索引吗? 如果该表是 MyISAM,请放心删除它。MySQL 查询优化器将baz_3在其执行计划中使用 UNIQUE KEY 进行查询优化。 如果要查找所有具有冗余索引的表,请参阅这篇文章:MySql - 查找冗余索引
是的,您可以删除它,因为
baz
和baz_3
具有相同的前导列。这种情况称为具有冗余索引。但是,如果表是 InnoDB,请注意该键
baz
未用于支持外键约束。请参阅我的帖子我有重复的键索引吗?如果该表是 MyISAM,请放心删除它。MySQL 查询优化器将
baz_3
在其执行计划中使用 UNIQUE KEY 进行查询优化。如果要查找所有具有冗余索引的表,请参阅这篇文章:MySql - 查找冗余索引