Estou auditando um aplicativo que venho desenvolvendo ao longo de várias semanas. Eu notei isso em CREATE TABLE
:
UNIQUE KEY `baz_3` (`baz`,`foo`,`bar`),
KEY `baz` (`baz`),
O explícito é KEY
redundante, como penso? Eu só quero ter certeza antes de fazer DROP
isso. Pelo que li, acredito que o UNIQUE KEY
funcionará como um índice quando o aplicativo for executado, WHERE baz='something'
mas o MySQL parece tão complicado que acho prudente perguntar aqui primeiro.
Sim, você pode eliminá-lo porque
baz
ebaz_3
tem colunas iniciais idênticas. Este cenário é conhecido como tendo índices redundantes.No entanto , tenha cuidado para que a chave
baz
não esteja sendo usada para suportar uma restrição de chave estrangeira se a tabela for InnoDB. Veja minha postagem Tenho índices de chave duplicados?Se a tabela for MyISAM, vá em frente e descarte-a com confiança. O MySQL Query Optimizer utilizará a UNIQUE KEY
baz_3
para otimização de consultas em seus planos de execução.Se você deseja localizar todas as tabelas com índices redundantes, consulte este post: MySql - encontrar índices redundantes