Najbardziej prawdopodobnym wyjaśnieniem jest to, że kolumna nodo
to znakowy typ danych, a character_set_connection
nie pasuje do zestawu znaków określonego dla kolumny.
Jeśli kolumna jest zdefiniowana za pomocą latin1
zestaw znaków, spróbuj:
WHERE nodo = CONVERT(@sitio USING latin1)
W ramach demonstracji, z utf8, wyjaśnij wyjście pokazuje brak dostępnego indeksu:
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
Ale w przypadku latin1 wyjaśnij, że dane wyjściowe pokazują, że indeks jest dostępny (i jest używany):
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