我有一张包含销售信息的表格。其中一列称为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
吗?