我有一个用户投票的大表。我尝试了几乎所有关于INDEX用法的教程和文章,并且在失败之后...每个可能的字段组合都作为键,但是查询保持缓慢。缓慢的MySQL查询索引
有没有我可以用来加快速度的指标?
(我会饶你我hidious企图indizes到目前为止...)
CREATE TABLE IF NOT EXISTS `votes` (
`uid` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`objectId` bigint(15) NOT NULL,
`vote` tinyint(1) NOT NULL,
`created` datetime NOT NULL,
UNIQUE KEY `unique input` (`uid`,`objectId`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
表有130万左右行,并会继续增长。这是我正在尝试的查询:
EXPLAIN SELECT objectId, COUNT(uid) AS voteCount, AVG(vote) AS rating
FROM votes
GROUP BY objectId
任何指针?
你的权利,我忘记了我的示例SQL中的objectId ...固定 – ToBe 2014-09-04 11:16:23
你确定Optimizer实际上会更快与这两个子查询,而不是一个组? – ToBe 2014-09-04 11:17:23
@ToBe。 。 。不,我说这是值得一试的。这在某些情况下可能会有所帮助,但我不知道在您的情况下它是否会更好。我更喜欢明确的“按组”方式,但有时你必须尝试欺骗引擎。 – 2014-09-04 11:26:27