sem*_*kin 2 mysql optimization group-by query-optimization
我在MySql数据库中有一个表PAYMENTS:
CREATE TABLE `PAYMENTS` (
`ID` BIGINT(20) NOT NULL AUTO_INCREMENT,
`USER_ID` BIGINT(20) NOT NULL,
`CATEGORY_ID` BIGINT(20) NOT NULL,
`AMOUNT` DOUBLE NULL DEFAULT NULL,
PRIMARY KEY (`ID`),
INDEX `PAYMENT_INDEX1` (`USER_ID`),
INDEX `PAYMENT_INDEX2` (`CATEGORY_ID`),
INDEX `PAYMENT_INDEX3` (`CATEGORY_ID`, `USER_ID`)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
我想获得ech类别中每个用户的汇总金额.这是脚本:
select sum(AMOUNT), USER_ID, CATEGORY_ID
from PAYMENTS
group by USER_ID, CATEGORY_ID;
Run Code Online (Sandbox Code Playgroud)
MySql的EXPLAIN命令显示Extra:"Using temporary; Using filesort"
如何摆脱使用临时&filesort?
你有一个索引,(CATEGORY_ID, USER_ID)但你正在分组USER_ID, CATEGORY_ID.
订单很重要!创建一个涵盖GROUP BY您实际使用的子句的索引- 字段顺序相同.
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |