0
非常に遅くCOUNT:現在11万レコードを含むMySQLは、私は、このテーブルを持っている
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
を、しかし、はるかに大きくなります。
私は非常に遅く実行しているこのテーブルに対して実行しているPHPプロセスを持っています - 実行時間は現在10 +分です。私は繰り返しプロセスでこのクエリ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'は'ユニークキー 'なので、' DROP'は冗長 'UNIQUE(line_id)'です。 –