下面是表结构。MySql 表包含 1100 万条数据。所有数据只能在一天内插入到表中。我尝试执行以下查询,它需要 5-7 分钟才能完成。我已经根据查询创建了索引,甚至需要 3-5 分钟才能完成。正在使用索引。
我应该怎么做才能提高查询性能?有什么建议么 ?
CREATE TABLE `service_collection_data` (
`service_name` varchar(512) NOT NULL,
`device_id` bigint(20) NOT NULL,
`dataset_name` varchar(1024) NOT NULL,
`dataset_title` varchar(1024) NOT NULL,
`dataset_type` varchar(32) NOT NULL,
`dataset_command` varchar(4000) DEFAULT NULL,
`tag_name` varchar(4000) DEFAULT NULL,
`command_status` varchar(256) NOT NULL,
`command_result` longtext,
`command_error` longtext,
`command_context` longtext,
`collection_time` timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY `device_id` (`device_id`),
KEY `service_tag_command_index` (`service_name`(300),`tag_name`(200),
`command_status`(200),`device_id`),
CONSTRAINT `service_collection_data_ibfk_1`
FOREIGN KEY (`device_id`)
REFERENCES `nodes` (`id`) ON DELETE CASCADE
)
ENGINE=InnoDB DEFAULT CHARSET=latin1
下面是执行查询
SELECT COUNT(DISTINCT device_id)
FROM service_collection_data
WHERE service_name='NOS'
AND tag_name='Config'
AND command_status = 'Successful'