我知道对此有类似的问题,但我有一个特定的查询/问题围绕为什么这个查询
EXPLAIN SELECT DISTINCT RSubdomain FROM R_Subdomains WHERE EmploymentState IN (0,1) AND RPhone='7853932120'
给我这个输出解释
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE RSubdomains index NULL RSubdomain 767 NULL 3278 Using where
在 RSubdomains 上使用和索引
但是如果我在 EmploymentState/RPhone 上添加一个综合索引
我从解释中得到这个输出
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE RSubdomains range EmploymentState EmploymentState 67 NULL 2 Using where; Using temporary
如果我删除 RSubdomains 上的 distinct ,它会从解释输出中删除 Using temp ......但我不明白为什么,当我添加复合键(并保留 RSubdomain 上的键)时,不同的结果会结束使用临时表,这里哪个索引架构更好?我看到在组合键上扫描的行数要少得多,但查询是范围类型的,而且速度也较慢。