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

Quando usar STRAIGHT_JOIN com MySQL


Eu não recomendaria usar STRAIGHT_JOIN sem um bom motivo. Minha própria experiência é que o otimizador de consulta MySQL escolhe um plano de consulta ruim com mais frequência do que eu gostaria, mas não com frequência suficiente para que você deva simplesmente ignorá-lo em geral, que é o que você faria se sempre usasse STRAIGHT_JOIN.

Minha recomendação é deixar todas as consultas como JOINs regulares. Se você descobrir que uma consulta está usando um plano de consulta abaixo do ideal, sugiro primeiro tentar reescrever ou reestruturar um pouco a consulta para ver se o otimizador escolherá um plano de consulta melhor. Além disso, pelo menos para o innodb, certifique-se de que não é apenas que suas estatísticas de índice estejam desatualizadas (ANALISAR TABELA ). Isso pode fazer com que o otimizador escolha um plano de consulta ruim. As dicas do otimizador geralmente devem ser seu último recurso.

Outra razão para não usar dicas de consulta é que sua distribuição de dados pode mudar ao longo do tempo, ou sua seletividade de índice pode mudar, etc. conforme sua tabela cresce. Suas dicas de consulta que são ótimas agora podem se tornar abaixo do ideal com o tempo. Mas o otimizador não poderá adaptar o plano de consulta devido às suas dicas agora desatualizadas. Você fica mais flexível se permitir que o otimizador tome as decisões.