我有這個疑問:的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'或'{}'編輯器工具欄按鈕。 –