我想了解是否可以优化以下查询以提高其执行速度:
SELECT
SUM(quantity) as quantity,
productId
FROM krakoweats.orderproducts
GROUP BY productId
ORDER BY quantity DESC
LIMIT 3;
该表的结构如下:
列名:
orderId int(11) PK
productId int(11) PK
quantity int(11)
unityPrice double
createdAt datetime
updatedAt datetime
我想要获取销量最高的前3个产品。该表大约有1100万条记录,运行此查询需要大约9秒,是否有办法加速这个查询?我正在使用MariaDB数据库。
编辑:
我已经创建了如下的索引:
+---------------+------------+------------------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| 表名 | 非唯一索引 | 索引名称 | 序号在索引中 | 列名 | 排序规则 | 基数 | 子部分 | 压缩 | 可为空 | 索引类型 | 注释 | 索引注释 | 忽略 |
+---------------+------------+------------------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| orderproducts | 0 | order_products_order_id_product_id | 1 | orderId | A | 55747 | NULL | NULL | | BTREE | | | NO |
| orderproducts | 0 | order_products_order_id_product_id | 2 | productId | A | 579777 | NULL | NULL | | BTREE | | | NO |
| orderproducts | 1 | order_products_product_id | 1 | productId | A | 31254 | NULL | NULL | | BTREE | | | NO |
+---------------+------------+------------------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+