SELECT MAX_JOIN_SIZE

Ola pessoal,

Este é um erro comum e polêmico ao mesmo tempo, onde ao efetuar uma consulta é retornada a mensagem:

The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay

Motivo? Esse erro ocorre quando o limite determinado de consulta no MySQL é atingido. ]

Sendo mais direto, a consulta precisa vasculhar mais de x linhas para a sua conclusão, onde o x é definido no próprio MySQL, na variável max_join_size:

Captura de tela de 2014-09-05 00:57:07

No exemplo acima, o limite definido foi de 1.000.000, logo se alguma consulta necessita vasculhar mais do que este valor, será retornado o erro.

O principal motivo deste assunto ser confuso é que, o erro não é retornado se você tem mais de x registros em suas tabelas, tudo depende da consulta que foi construída, afinal você pode efetuar joins entre duas ou mais tabelas, aumentando o numero de dados consultados, ou tentar efetuar o dump da base MySQL.

Algo que pode ser revisado afim de evitar este erro é a criação de índices em suas tabelas, fazendo com que a consulta seja mais rápida e eficaz, pesquisando um determinado dado em um intervalo especifico, evitando praticas desnecessárias de acordo a necessidade como o full table scan.

Caso tenha total administração no servidor MySQL, você pode alterar o valor desta variável, utilizando o valor máximo desta doc – 18446744073709551615

Captura de tela de 2014-09-05 01:28:52

Feito isto, basta iniciar uma nova sessão no MySQL, onde o valor optado já estará em vigor.


É isso ai pessoal.

Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 😀

Jose Wilson

Deixe uma resposta