Die wahrscheinlichste Erklärung ist diese Spalte nodo
Zeichendatentyp ist, und character_set_connection
stimmt nicht mit dem für die Spalte angegebenen Zeichensatz überein.
Wenn die Spalte mit latin1
definiert ist Zeichensatz, versuchen Sie:
WHERE nodo = CONVERT(@sitio USING latin1)
Zur Demonstration zeigt die EXPLAIN-Ausgabe mit utf8, dass kein Index verfügbar ist:
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
Aber mit latin1 zeigt die EXPLAIN-Ausgabe, dass der Index verfügbar ist (und verwendet wird):
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