次のテーブルを作成しました。
CREATE TABLE `clicks_summ` (
`dt` INT(7) UNSIGNED NOT NULL,
`banner` SMALLINT(6) UNSIGNED NOT NULL,
`client` SMALLINT(6) UNSIGNED NOT NULL,
`channel` SMALLINT(6) UNSIGNED NOT NULL,
`cnt` INT(11) UNSIGNED NOT NULL,
`lpid` INT(11) NULL DEFAULT NULL,
UNIQUE INDEX `dt` (`dt`, `banner`, `client`, `channel`, `lpid`),
INDEX `banner` (`banner`),
INDEX `channel` (`channel`),
INDEX `client` (`client`),
INDEX `lpid` (`lpid`),
INDEX `cnt` (`cnt`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;
そして私はこのテーブルから行/レコードをフェッチするために次のクエリを使用しています:
select client, sum(cnt) cnt
from clicks_summ cs
group by client;
そしてそれはひどいです!このクエリの実行には約1秒かかります。EXPLAIN
見せてくれ
したがって、問題は、このクエリをどのように高速化できるかということです。さまざまなフィールドでこのテーブルのインデックスを作成しようとしましたが、妥当な成功はありませんでした。現在331 036
、このテーブルには行がありますが、それほど大きくはないと思います。