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

Esclarecimento da ordem de junção para criação de tabelas temporárias


  1. Refere-se à ordem em que o otimizador os avalia (fila de junção). O otimizador pode nem estar ciente da ordem das tabelas em sua instrução sql.

  2. Não, isso não contradiz o que foi escrito no nº 3, pois a resposta escreve explicitamente (a ênfase é minha):

O resultado e o desempenho são duas coisas diferentes. Na verdade, há um comentário votado na resposta dizendo que

  1. Você pode dizer ao otimizador qual tabela processar primeiro usando straight_join :

No entanto, você precisa ter cuidado com isso porque você amarra a mão do otimizador. Veja este SO tópico sobre discutir vantagens e desvantagens do straight_join.

Número de registros, onde critérios, índices - todos desempenham seu papel na decisão do otimizador da ordem de processamento das tabelas. Não existe uma bala mágica, você precisa brincar um pouco e provavelmente pode enganar o otimizador para alterar a ordem das mesas.