我有一個查詢可以通過聚合進行總結。優化具有8.5億行的MySQL表上的聚合
該表稱爲「連接」,擁有大約8.43億行。
CREATE TABLE `connections` (
`app_id` varchar(16) DEFAULT NULL,
`user_id` bigint(20) DEFAULT NULL,
`time_started_dt` datetime DEFAULT NULL,
`device` varchar(255) DEFAULT NULL,
`os` varchar(255) DEFAULT NULL,
`firmware` varchar(255) DEFAULT NULL,
KEY `app_id` (`bid`),
KEY `time_started_dt` (`time_started_dt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
當我嘗試運行查詢時,如下面的查詢,它需要超過10個小時,我最終將其殺死。有沒有人看到我所做的任何錯誤,對我如何優化查詢有任何建議?
SELECT
app_id,
MAX(time_started_dt),
MIN(time_started_dt),
COUNT(*)
FROM
connections
GROUP BY
app_id
'app_id'上沒有索引? –
可能在該索引中包含time_started_dt,但app_id顯然非常重要。 –
@juergen d我其實確實有'app_id'索引... bid是一個錯字。 – user1152532