説明プランに3分以上かかる場合は、時間を短縮する方法をお勧めします。 Select文とCount(*)はどちらも同じ時間がかかります。それ以下はクエリに時間がかかりすぎる(100kレコードで3分)
SELECT
s.sap_id AS 'SAP ID',
z.name AS 'Circle' ,
m.mme_host_name AS 'MME HostName',
case when mmelog.retry_count is null then m.mme_status when mmelog.retry_count is not null then mmelog.status else null end AS 'Status',
case when mmelog.retry_count is null then m.description when mmelog.retry_count is not null then mmelog.reason else null end AS 'Description' ,
m.modifiedTime AS Date,
ifnull(mmelog.retry_count,0)as 'Retry Count'
FROM
site s
INNER JOIN zone z ON s.zone_id = z.id
INNER JOIN mme_result m ON m.site_id = s.id
LEFT OUTER JOIN mme_connection_log mmelog ON mmelog.sap_id = s.sap_id
WHERE
m.modifiedTime >= '2015-07-25'
AND m.modifiedTime <= '2016-07-25'
ORDER BY
m.modifiedTime,
s.sap_id;
EXPLAIN PLAN:
----+-------------+--------+-------+--------------------------------------+---------------------+---------+----------------+-------+-----------------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+-------+--------------------------------------+---------------------+---------+----------------+-------+-----------------------------------------------------------------+
| 1 | SIMPLE | z | index | PRIMARY | creator | 5 | NULL | 24 | Using index |
| 1 | SIMPLE | s | ref | PRIMARY,site_region_fk | site_region_fk | 5 | siteforge.z.id | 1915 | NULL |
| 1 | SIMPLE | m | ref | FK89FCE6D7459A62FF,modifiedTimeIndex | FK89FCE6D7459A62FF | 5 | siteforge.s.id | 2 | Using where |
| 1 | SIMPLE | mmelog | index | NULL | idx_sapid_mmeconlog | 258 | NULL | 16616 | Using where; Using index; Using join buffer (Block Nested Loop) |
+----+-------------+--------+-------+--------------------------------------+---------------------+---------+----------------+-------+---
| mme_connection_log |
CREATE TABLE `mme_connection_log` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`mme_host_name` varchar(255) DEFAULT NULL,
`modifiedTime` datetime DEFAULT NULL,
`reason` varchar(255) DEFAULT NULL,
`retry_count` int(11) DEFAULT NULL,
`sap_id` varchar(255) DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
`createdTime` datetime DEFAULT NULL,
`creator` int(10) unsigned DEFAULT NULL,
`last_modifier` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `sap_id` (`sap_id`,`mme_host_name`),
KEY `FKAD24771D82DD582F` (`creator`),
KEY `FKAD24771D43DE0263` (`last_modifier`),
KEY `mmehostINdex` (`mme_host_name`),
KEY `idx_sapid_mmeconlog` (`sap_id`),
CONSTRAINT `FKAD24771D43DE0263` FOREIGN KEY (`last_modifier`) REFERENCES `users` (`userid`),
CONSTRAINT `FKAD24771D82DD582F` FOREIGN KEY (`creator`) REFERENCES `users` (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=55047 DEFAULT CHARSET=latin1 |
| mme_result |
CREATE TABLE `mme_result` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`description` varchar(255) DEFAULT NULL,
`mme_host_name` varchar(255) DEFAULT NULL,
`mme_status` varchar(255) DEFAULT NULL,
`modifiedTime` datetime DEFAULT NULL,
`zone_id` int(10) unsigned DEFAULT NULL,
`site_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `mme_host_name` (`mme_host_name`,`site_id`),
KEY `FK89FCE6D7C1D1CCDF` (`zone_id`),
KEY `FK89FCE6D7459A62FF` (`site_id`),
KEY `mmehostINdex` (`mme_host_name`),
KEY `modifiedTimeIndex` (`modifiedTime`),
CONSTRAINT `FK89FCE6D7459A62FF` FOREIGN KEY (`site_id`) REFERENCES `site` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK89FCE6D7C1D1CCDF` FOREIGN KEY (`zone_id`) REFERENCES `zone` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=914671 DEFAULT CHARSET=latin1 |
SAPIDは、あなたがUNIQUE(a,b)
を持っている場合、あなたはKEY(a)
を必要としない
説明whareを見つけるために説明する必要がありますインデックスが必要です。 – Jens
ところで、 'Group by' senceなしで 'Count(*)'を作るのですか? – Jens
コメントではなく質問に説明結果を追加してください – Jens