如何让GROUP BY使用索引?

Mar*_* AJ 1 mysql sql optimization group-by

我有一个非常简单的查询:

SELECT SUM(amount) sum, psp_id
FROM pos_transactions
GROUP BY psp_id
Run Code Online (Sandbox Code Playgroud)

执行需要10多秒。这也是结果EXPLAIN

在此输入图像描述

请注意,还定义了一个索引pos_transactions(psp_id)。知道如何才能使其达到最佳状态吗?

sla*_*kso 5

psp_id您可以使用和来添加索引amount

create index psp_amount_ind on pos_transactions (psp_id, amount)
Run Code Online (Sandbox Code Playgroud)

如果只有 的索引psp_id,MySQL 需要从该行中获取amount。在这种情况下使用索引没有用,因为它也可以psp_id从行中获取。

参见dbfiddle