A explicação mais provável é que a coluna
nodo
é o tipo de dados de caractere e character_set_connection
não corresponde ao conjunto de caracteres especificado para a coluna. Se a coluna estiver definida com
latin1
conjunto de caracteres, tente:WHERE nodo = CONVERT(@sitio USING latin1)
Como demonstração, com utf8, a saída de explicação não mostra nenhum índice disponível:
EXPLAIN SELECT t.* FROM mytable t WHERE t.foo = CONVERT(@foo USING utf8)
^^^^
id select_type table type possible_keys key key_len ref rows Extra
-- ----------- ----- ---- ------------- ------ ------- ------ ---- -----------
1 SIMPLE t ALL (NULL) (NULL) (NULL) (NULL) 3 Using where
Mas com latin1, a saída de explicação mostra que o índice está disponível (e é usado):
EXPLAIN SELECT t.* FROM mytable t WHERE t.foo = CONVERT(@foo USING latin1)
^^^^^^
id select_type table type possible_keys key key_len ref rows Extra
-- ----------- ----- ---- ------------- ------ ------- ------ ---- -----------
1 SIMPLE t ref t_ix t_ix 13 const 1 Using where