我有一个具有以下结构的应用程序表
app_id VARCHAR(32) NOT NULL,
dormant VARCHAR(6) NOT NULL,
user_id INT(10) NOT NULL UNSIGNED
我在这张表上有两个索引-:
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
第二次,尽管它在两种情况下都使用相同的索引?