我有一個用戶投票的大表。我嘗試了幾乎所有關於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