我有一张包含销售信息的表格。其中一列称为royalty_currency,我需要从该表中提取所有不同的货币。这样做的查询是:
SELECT distinct `royalty_currency` FROM `sales_raw`
当我在此列上没有索引时,解释语句给了我:
id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  sales_raw   ALL NULL    NULL    NULL    NULL    195121  Using temporary
添加索引后,解释语句给了我:
id  select_type table       type    possible_keys key              key_len  ref rows    Extra
1   SIMPLE      sales_raw   range   NULL          royalty_currency92        NULL    211 Using index for group-by
我的问题是,为什么 SELECT 语句需要使用索引?我以为索引是针对WHERE子句的?如果只选择一列,为什么需要使用索引?最后,这是我使用的一个常见查询——我应该在这个表上添加一个索引royalty_currency吗?