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)。知道如何才能使其达到最佳状态吗?
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