Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL e conjunto aninhado:JOIN lento (sem usar índice)


Ah, acabou de me ocorrer.

Como você está pedindo tudo na tabela, o mysql decide usar uma varredura completa da tabela, pois considera mais eficiente.

Para obter algum uso de chave, adicione alguns filtros para restringir a procura de todas as linhas em todas as tabelas de qualquer maneira.

Atualizando a resposta:

Sua segunda consulta não faz sentido. Você fica juntando-se ao lca, mas tem um filtro nele, isso nega a união esquerda por si só. Além disso, você está procurando dados na última etapa da consulta, o que significa que você terá que procurar em todos os lt, lc e lca para encontrar seus dados. Além disso, você não tem índice com o 'tipo' da coluna mais à esquerda nos locais, portanto, ainda precisa de uma verificação completa da tabela para encontrar seus dados.

Se você tivesse alguns dados de amostra e um exemplo do que está tentando alcançar, talvez fosse mais fácil ajudar.