MySQL ERROR 1104 Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the SELECT is ok

ERROR 1104: The SELECT would examine too many records and probably take a very long time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the SELECT is ok

Hay veces que ciertas aplicaciones utilizan unas cantidades de recursos que MySQL por defecto limita para evitar consumir recursos por tiempo prolongado.

MySQL limita esto gracias a ciertas variables como max_join_size.

Esta variable está relacionada directamente con otra, sql_big_selects.

Poner cualquier valor diferente del DEFAULT reseta el valor de sql_big_selects a 0. Si configuras por contra sql_big_selects otra vez, la variable max_join_size es ignorado.

Si nos encontramos con el error antes mencionado quizá debemos hacer uso de esta variable. Si queremos aplicarlo en running time haremos:

# SET GLOBAL max_join_size=18446744073709551615;

o bien, editaremos el fichero de configuración de MySQL my.cnf:

max_join_size=1024M

Si queremos el valor por defecto, simplemente, dejaremos el my.cnf sin este valor especificado y tomará el por defecto:

mysql -uroot -p -e "show variables like '%max_join_size'"
+-------------------+----------------------+
| Variable_name     | Value                |
+-------------------+----------------------+
| max_join_size     | 18446744073709551615 |
| sql_max_join_size | 18446744073709551615 |
+-------------------+----------------------+

Comentario: no se puede poner directamente el valor por defecto como max_join_size=18446744073709551615. Esto hace detener el servicio por algún problema. Mejor dejar el valor sin configurar y que coja este número por defecto.

Leave a Reply

Your email address will not be published. Required fields are marked *