ITPub博客

首页 > 数据库 > 国内数据库 > 国产数据库创新集锦——小count也有大智慧⓶普通索引,单车变摩托

国产数据库创新集锦——小count也有大智慧⓶普通索引,单车变摩托

原创 国内数据库 作者:梁敬彬 时间:2025-04-03 20:33:01 0 删除 编辑

往期回顾

国产数据库创新集锦——小count也有大智慧⓵顺其自然 ,性能很拉垮

⓶普通索引,单车变摩托

彬老师:我们加个 B树索引再来看效果:

drop table t purge;
create table t as select * from dba_objects;
alter table T modify OBJECT_NAME not null;
create index idx_object_name on t(object_name);
set autotrace traceonly;
set timing on ;
select count(*) from t;
执行计划
---------------------------------
Plan hash value: 1178070731
--------------------------------------------------------------------------------------
| Id | Operation           | Name              | Rows  | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT    |                   |     1 |   105   (1)| 00:00:02 |
|  1 |   SORT AGGREGATE    |                   |     1 |            |          |
|  2 |   INDEX FAST FULL SCAN| IDX_OBJECT_NAME | 92256 |   105   (1)| 00:00:02 |
--------------------------------------------------------------------------------------
统计信息
---------------------------------
          0  recursive calls
          0  db block gets
        372  consistent gets

大饼: 执行计划从 全表扫描变成了 全索引扫描,逻辑读从1048降到372,单车变摩托了!

在这里插入图片描述

小渣:效果很炸裂啊!不过,count(*) 这种遍历所有记录的查询,不是一般不建议使用索引吗?

弘老师: 这个问题问得好。索引的本质是索引列值加上对应的 rowid。当我们只需要计数时,访问索引比访问完整的表数据要小得多,IO开销自然大幅降低。

小渣: 原来如此!通过访问更小的数据结构来完成相同任务,确实是个聪明的方法。

彬老师:不过要特别注意,这里的索引列必须是非空约束或者主键,否则索引中不会包含NULL值的行,统计结果就会不准确,这时数据库会自动拒绝使用索引。

大饼:学到了!还有更快的方法吗?


未完待续... 国产数据库创新集锦——小count也有大智慧⓷位图索引,摩托变赛车


公众号:收获不止数据库

微信:ljbyxl1213

系列回顾


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9091385/viewspace-3080008/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
历任中电福富研究院副理事长、中盾安信研究院副院长、宁德时代技术顾问等职务,受聘电信集团专家和国家十四五课题负责人,著有《收获,不止Oracle》《收获,不止SQL优化》等多本畅销数据库技术书籍。

注册时间:2024-02-06

  • 博文量
    162
  • 访问量
    198287