我有一個非常緩慢的MySQL查詢如下:很慢的簡單的MySQL查詢
SELECT function, CONVERT_TZ(`time`, '+01:00','+01:00')
FROM `function_logger`
WHERE unit_id=3067785
and part_id=3 and channel=0
and `time` > NOW()-INTERVAL 1 DAY
order by time;
爲下表結構
CREATE TABLE IF NOT EXISTS `function_logger` (
`id` int(11) NOT NULL,
`unit_id` int(11) NOT NULL,
`part_id` tinyint(4) NOT NULL DEFAULT '0',
`channel` tinyint(4) NOT NULL DEFAULT '0',
`function` tinyint(11) NOT NULL,
`time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `function_logger`
ADD PRIMARY KEY (`id`),
ADD KEY `unit_id` (`unit_id`);
表中包含約80萬條記錄,但周圍一分鐘花費跑。一旦緩存就沒問題。
UNIT_ID包含約3000張不同的隨機數,PART_ID高達10通道高達3
反正是有加快這?
分區幫助嗎?
添加覆蓋索引'改變表function_logger添加索引search_idx(UNIT_ID,PART_ID,通道,時間)' –
什麼是從一個時區轉換'time'到同一時區的地步? – eggyal
@AbhikChakraborty:這不是一個覆蓋索引... – eggyal