此查詢出現在mysql慢速查詢日誌中:需要11秒。爲什麼這個查詢很慢?
INSERT INTO record_visits
(record_id, visit_day)
VALUES
('567', NOW());
表有501043條記錄,它的結構是這樣的:
CREATE TABLE IF NOT EXISTS `record_visits` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`record_id` int(11) DEFAULT NULL,
`visit_day` date DEFAULT NULL,
`visit_cnt` bigint(20) DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `record_id_visit_day` (`record_id`,`visit_day`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
出了什麼問題?爲什麼這個INSERT需要這麼長時間?
UPDATE
我發現,什麼是一切煩惱的原因。在該表上創建了一個非常沉重的「ON INSERT」觸發器。與MyISAM表鎖定一起,它爲INSERT查詢提供了巨大的查詢時間。可能這就是爲什麼@Oswald在評論中無法再現這種情況。
這裏真正的問題是,MySQL不會在觸發器內部記錄查詢,並且在分析應用程序時總是必須記住它們。
感謝您的幫助,每個人都接受接近解決方案的答案。
重新啓動MySQL服務器的幫助嗎? – 2011-01-09 18:29:00
可能是因爲你的唯一索引。但它不應該這麼慢。 – alexn 2011-01-09 18:29:24