Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

295
Visualizações
Mysql: cómo diseñar índices para una consulta con WHERE y GROUP BY

Trabajo con base de datos MySQL (MyISAM).

Tengo una consulta como esta:

 select c1, c2, c3, MAX(c5) from T where c4=#string_value# group by c1, c2, c3 - c[1-4] are varchar(255) - c5 is an integer

He probado dos índices:

  • "c1_c2_c3_idx" para ( c1 , c2 , c3 ) - eso hace que la consulta funcione 3 veces más lenta
  • "c4_idx" para ( c4 ): eso hace que la consulta funcione 5 veces más rápido

¿Tal vez hay una manera de crear un índice aún más rápido?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Veo que el siguiente índice es óptimo:

 CREATE INDEX idx ON T (c4, c1, c2, c3, c5);

El índice comienza con c4 , que aparece en la cláusula WHERE , que es la primera parte de la ejecución de la consulta. A continuación, agregamos c1 , c2 y c3 para cubrir la cláusula GROUP BY . Después de esto, agregamos c5 , lo que hará que MySQL encuentre mucho más rápido MAX(c5) .

Tenga en cuenta que se puede decir que el índice anterior cubre toda la consulta, porque MySQL puede usar el índice solo para satisfacer todo el plan de consulta, sin necesidad de volver a buscar el índice agrupado (tabla).

over 4 years ago · Santiago Trujillo Relatório

0

El mejor índice debe basarse en la condición where...

 create index idx1 on T ( c4)

para evitar el acceso a la tabla de datos y usar solo la información contenida en el índice, también puede intentar usar un índice redundante agregando la columna involucrada en otras cláusulas

 create index idx1 on T ( c4, c1,c2,c3,c5)

dejando la columna donde más se fue

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda