我创建了下表:
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;
太糟糕了!执行此查询大约需要一秒钟。 EXPLAIN
告诉我
所以,问题是:如何加快这个查询?我试过在不同的领域索引这个表,没有任何合理的成功。现在这个表中有331 036
行,我想,不是那么大。
答案 0 :(得分:2)
尝试创建INDEX client_cnt(client, cnt)
。另一种提高查询速度的方法是升级您的硬件:)
答案 1 :(得分:0)
一件很酷的事情
如果你的where子句中总是有5个col,当5 col的分组索引将胜过5个单独的索引时;)