count(*)很慢的原因是什么
发布时间:2023-06-30 09:53:09 所属栏目:MySql教程 来源:
导读:这篇文章主要介绍“count(*)很慢的原因是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“count(*)很慢的原因是什么”文章能帮助大家解决问题。
|
这篇文章主要介绍“count(*)很慢的原因是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“count(*)很慢的原因是什么”文章能帮助大家解决问题。 以下所有的内容均是基于,mysql 5.7 + InnoDB引擎, 进行的分析。 拓展: MyISAM 如果没有查询条件,只是简单的统计表中数据总数,将会返回的超快,因为service层中获取到表信息中的总行数是准确的,而InnoDB只是一个估值。 实例 以下是一张表数据量有100w,表中字段相对较短,整体数据量不算大。 CREATE TABLE `hospital_statistics_data` ( `pk_id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `id` varchar(36) COLLATE utf8mb4_general_ci NOT NULL COMMENT '外键', `hospital_code` varchar(36) COLLATE utf8mb4_general_ci NOT NULL COMMENT '医院编码', `biz_type` tinyint NOT NULL COMMENT '1服务流程 2管理效果', `item_code` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '考核项目编码', `item_name` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '考核项目名称', `item_value` varchar(36) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '考核结果', `is_deleted` tinyint DEFAULT NULL COMMENT '是否删除 0否 1是', `gmt_created` datetime DEFAULT NULL COMMENT '创建时间', `gmt_modified` datetime DEFAULT NULL COMMENT 'gmt_modified', `gmt_deleted` datetime(3) DEFAULT '9999-12-31 23:59:59.000' COMMENT '删除时间', PRIMARY KEY (`pk_id`) ) DEFAULT CHARSET=utf8mb4 COMMENT='医院统计数据'; 此表初始状态只有一个聚簇索引。 以下分不同索引情况,看一下COUNT(*)的执行计划。 1)在只有一个聚簇索引的情况下看一下执行计划。 EXPLAIN select COUNT(*) from hospital_statistics_data; 这里只关注以下几个属性。 type: 这里显示index,说明使用了索引。 key:PRIMARY使用了主键索引。 key_len: 索引长度8字节。 这里有很关键的一点:count(*)也会走索引,在当前情况下使用了聚簇索引。 2)存在一个非聚簇索引(二级索引) 给表添加一个hospital_code索引。 alter table hospital_statistics_data add index idx_hospital_code(hospital_code) 此时表中存在2个索引,主键 和 hospital_code。 同样的,再执行一下: EXPLAIN select COUNT(*) from hospital_statistics_data; 同样的,看一下 type、key和key_len三个字段。 为何索引变成刚添加的idx_hospital_code了。 小结: count(index) 会使用当前index指定的索引。 count(无索引) 是全表扫描,未走索引。 count(1) , count(*), count(id) 一样都会选择idx_biz_type索引 关于“count(*)很慢的原因是什么”的内容就介绍到这里了,感谢大家的阅读。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
