このようなインデックスがあったとして
# id varchar(16) に対してのindex
CREATE INDEX test ON user(id);
これは varchar(16) で宣言されています。ですが、実態として中身が数値しか入っていなかったとします
mysql> select id from user;
+----------+
| id |
+----------+
| 11111111 |
| 22222222 |
| 33333333 |
| 44444444 |
| 55555555 |
| 66666666 |
+----------+
これに対して、数値で検索をかけてしまうとインデックスは効きません。
select * from user where id in (22222222, 66666666);
文字列で定義されているため、暗黙の型変換が入りインデックスが外れます。文字列で指定してあげましょう。
select * from user where id in ('22222222', '66666666');
インデックスきいているはずなのに遅いなと思ったら要注意。