我有这个疑问:的MySQL优化SELECT COUNT不同的组由
SELECT `variationID`, count(DISTINCT(`userID`))
FROM data WHERE `testID` = XXXX AND `visit` = 1 GROUP BY `variationID`
;
这需要花费大量的时间来query.How我可以加快查询。
SELECT_TYPE表型possible_keys键key_len REF行 过滤额外SIMPLE数据
REF dc3_testIDPage,dc3_testIDvarIDPage,user_test_varID_url
dc3_testIDvarIDPage 8常量33106102 100.00使用其中
这是创建表的输出:
CREATE TABLE `data` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`userID` bigint(17) NOT NULL,
`testID` bigint(20) NOT NULL,
`variationID` bigint(20) NOT NULL,
`url` bigint(20) NOT NULL,
`time` bigint(20) NOT NULL,
`visit` bigint(20) NOT NULL DEFAULT '1',
`isTestPage` tinyint(1) NOT NULL,
PRIMARY KEY (`id`,`testID`),
KEY `url` (`url`),
KEY `dc3_testIDPage` (`testID`,`url`),
KEY `dc3_testIDvarIDPage` (`testID`,`variationID`,`url`),
KEY `user_test_url` (`userID`,`testID`,`url`),
KEY `user_test_varID_url` (`userID`,`testID`,`variationID`,`url`)
) ENGINE=InnoDB AUTO_INCREMENT=67153224 DEFAULT CHARSET=latin1
欢迎来到Stack Overflow。感谢您发布EXPLAIN计划。你还可以编辑你的帖子以添加来自'SHOW CREATE TABLE data'的输出吗?要将其格式化为代码块,请突出显示它并使用'ctl-k'或'{}'编辑器工具栏按钮。 –