次の構造のappsテーブルがあります
app_id VARCHAR(32) NOT NULL,
dormant VARCHAR(6) NOT NULL,
user_id INT(10) NOT NULL UNSIGNED
このテーブルには 2 つのインデックスがあります -:
combo1(UNIQUE) - app_id, user_id;
combo2(INDEX) - app_id, dormant, user_id
このクエリを実行します
EXPLAIN SELECT COUNT(user_id),
IF(user_id=1,'yes','no') FROM apps
WHERE app_id='app_2' AND dormant = 'false'
次の情報を出力します -:
id -> 1;
type -> SIMPLE;
table -> apps;
possible_keys -> combo1, combo2;
key -> combo2;
key_len -> 34;
ref -> const;
rows -> 1;
Extra -> Using where
しかし、このクエリを実行すると
EXPLAIN SELECT COUNT(user_id),
IF(user_id=1,'yes','no')
FROM apps USE INDEX(combo2)
WHERE app_id='app_2' AND dormant = 'false'
次の情報を出力します -:
id -> 1;
type -> SIMPLE;
table -> apps;
possible_keys -> combo2;
key -> combo2;
key_len -> 42;
ref -> const,const;
rows -> 1;
Extra -> Using where; Using index
Using index
どちらの場合も同じインデックスを使用しているのに、なぜ 2 回目に言っているのでしょうか?