0
我有這個表:的MySQL COUNT很慢
CREATE TABLE `pertemba_client_raw_data` (
`line_id` int(11) NOT NULL AUTO_INCREMENT,
`feed_id` int(11) NOT NULL COMMENT 'References pertemba_client_feed_log.feed_id',
`data_line` int(11) NOT NULL COMMENT 'Eg. The CSV line number or JSON object index.',
`property_title` varchar(255) NOT NULL COMMENT 'Eg. The CSV header or JSON key.',
`property_value` varchar(255) NOT NULL COMMENT 'Eg. The CSV field value or JSON object value.',
`date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`line_id`),
UNIQUE KEY `pertemba_client_raw_data_line_id_pk` (`line_id`),
KEY `feed_id` (`feed_id`),
CONSTRAINT `pertemba_client_raw_data_ibfk_1` FOREIGN KEY (`feed_id`) REFERENCES `pertemba_client_feed_log` (`feed_id`)
) ENGINE=InnoDB AUTO_INCREMENT=113121 DEFAULT CHARSET=utf8
目前包含約11萬條記錄,但會變得更大。
我有一個運行時間非常緩慢的運行時間爲10分鐘以上的php進程。當我反覆運行show PROCESSLIST;
此查詢的過程中始終運行:
SELECT COUNT(pcr.line_id) AS result FROM pertemba_client_raw_data AS pcr
WHERE pcr.feed_id = :feedId
AND pcr.property_title = :title
AND pcr.property_value = :optionLink
我將不勝感激,可建議擊敗這個問題的任何的優化。
在'property_title'和'property_value'上添加一個鍵。像這樣的查詢應該在1秒內運行。 –
@Zamrony P. Juhara謝謝你們,這已經爲我的查詢時間創造了奇蹟!我會標記Zamrony的答案,但直到我已經遵循了Juergen的建議,我纔看到它。 – steelpush
(不是答案,而是建議)由於'PRIMARY KEY'是'UNIQUE KEY','DROP'是冗餘'UNIQUE(line_id)'。 –