Penjelasan yang paling mungkin adalah kolom nodo
adalah tipe data karakter, dan character_set_connection
tidak cocok dengan set karakter yang ditentukan untuk kolom.
Jika kolom didefinisikan dengan latin1
set karakter, coba:
WHERE nodo = CONVERT(@sitio USING latin1)
Sebagai demonstrasi, dengan utf8, jelaskan keluaran menunjukkan tidak ada indeks yang tersedia:
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
Tetapi dengan latin1, jelaskan output menunjukkan indeks tersedia (dan digunakan):
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