私は約100,000のレコードを持つ以下のスキーマのようなテーブルを持っています。mysqlはsum()を得るのに長い時間がかかります
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値があります。)
私の結果はより速くするには?
@ 1000111、 KEY item_id(item_id)は、item_id列のインデックスではありませんか? – asankasri
申し訳ありませんが、私はそれを逃した。あなたの質問の「Explain」結果を共有してください。 – 1000111