数据库结构:show create table api_test_history_detail;
CREATE TABLE `api_test_history_detail` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`case_id` varchar(50) DEFAULT NULL,
`case_number` varchar(50) DEFAULT NULL,
`host` varchar(100) DEFAULT NULL,
`url` varchar(100) DEFAULT NULL,
`model` varchar(100) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`description` varchar(500) DEFAULT NULL,
`request_type` varchar(50) DEFAULT NULL,
`request_headers` varchar(500) DEFAULT NULL,
`params_type` varchar(50) DEFAULT NULL,
`params` longtext,
`priority` varchar(50) DEFAULT NULL,
`login_or_not` varchar(50) DEFAULT NULL,
`platform` varchar(50) DEFAULT 'Android',
`pre_case_id` varchar(50) DEFAULT NULL,
`pre_case_data` varchar(500) DEFAULT NULL,
`expect_whole` longtext,
`expect_value` varchar(500) DEFAULT NULL,
`expect_structure` longtext,
`request_time_millisecond` int(11) DEFAULT '0',
`run_time_seconds` int(11) DEFAULT '0',
`start` datetime DEFAULT NULL,
`end` datetime DEFAULT NULL,
`result` varchar(50) DEFAULT NULL,
`response` longtext,
`reason` varchar(1000) DEFAULT NULL,
`report_dir_name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `report_dir_name_index` (`report_dir_name`)
) ENGINE=InnoDB AUTO_INCREMENT=80194 DEFAULT CHARSET=utf8mb4
查询语句:select * from api_test_history_detail where report_dir_name='20230725100814';
查询结果只有一条,未建索引时,查询时间需要 8s+,而建立索引后,查询时间几乎是 0s
由此可见,建立索引优化查询速度的效率还是非常高的,可以将查询频率高的字段合理建立索引。
另外,还有个细节需要注意一下,查询语句中,字符串值最好用引号括起来,如果不用引号查询依然很耗时!!