mysql需要很长时间才能得到sum()

时间:2016-03-21 04:56:25

标签: mysql database

我有一个如下图所示的表,它有大约100,000条记录。

CREATE TABLE IF NOT EXISTS `order_items` (
    `order_item_id` int(1) unsigned NOT NULL AUTO_INCREMENT,
    `item_id` int(1) unsigned DEFAULT '0',
    `final_amt` double NOT NULL DEFAULT '0',
    PRIMARY KEY (`order_item_id`),
    KEY `item_id` (`item_id`),
    KEY `final_amt` (`final_amt`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;

(请注意,还有一些其他字段和索引。)

当我运行以下查询时,大约需要10到20秒。

SELECT  item_id, SUM( final_amt) AS tot_final_amt
FROM  `order_items` 
GROUP BY item_id;

(大约有350个不同的item_id值。)

如何让我的结果更快?

1 个答案:

答案 0 :(得分:0)

您不使用过滤条件(WHERE),因此必须扫描整个表。如果您不能使用WHERE,则需要创建一个新表,以便为每个EOF存储SUM()。每次更改scanf()时,您都需要更新此新表(例如,使用TRIGGER,如rkosegi所建议的那样)。这是多余的,但我认为这是加速查询所必需的。