MySQL não usar o melhor índice

o quê:

Eu tenho uma consulta seleção simples:

SELECT *
FROM `inventory`
WHERE account_id = "1"
AND marketplace_id = "2"
AND sku = "3"
AND `date` = "4"

Ele tem uma condição em quatro campos, por conseguinte, o índice natural é um desses quatro campos.

Eu tenho as seguintes índices: digite descrição da imagem aqui

e quando eu explicar a consulta, eu recebo: digite descrição da imagem aquiDizê-lo é usando o 2º índice da lista, ao invés do 3º ou 4º.

Se eu usar USE INDEX(account_id__marketplace_id__sku__date)na minha consulta, ele usa-lo com sucesso, e filtra 100%.

Eu tentei ANALYZE TABLEe OPTIMIZE TABLEpara reconstruir os índices, mas a situação permanece a mesma!

Da minha experiência com outras tabelas, se eu agora eliminar índices 2 e 3, e recriá-las, de modo que o maior índice é o primeiro na ordem, a consulta irá selecionar esse índice, ou seja, ele seleciona o primeiro que partidas em vez de um máximas Combine.

  • Versão do servidor MySQL : 5.7.25-google-log
  • phpMyAdmin MySQL versão do cliente : 5.5.59
Espera Shi:

Mysql escolherá índice pelo tamanho de dados da tabela; digite descrição da imagem aqui

Você pode tentar inserir 600000 registros em inventário, mantenha o valor do registro aleatório, e executar "explicar"

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=372708&siteId=1
Recomendado
Clasificación