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

Desempenho simples da subconsulta do MySQL


Na primeira consulta o mysql deve selecionar um subconjunto de mdl_enrol tabela e completo mdl_user_enrolments e mdl_userdata na memória. Então você seleciona muitos dados na memória. Depois de fazer isso - você junta os dados. Se não houver memória suficiente para colocar todos os dados até que sejam unidos e enviados de volta ao cliente - então é criada uma tabela temporária no disco rígido. Muito provavelmente o otimizador mysql não é legal o suficiente para corrigir seu erro e tentar melhorar o plano de execução. Por isso é lento.

Considerando que para a segunda consulta o mysql sabe exatamente o que precisa selecionar e seleciona apenas a pequena quantidade de dados necessários. Neste cenário é possível usar índices (assumindo que todos os índices necessários foram criados). Então é rápido.