读书笔记:什么是部分索引?

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

什么是部分索引?

想象一下,你管理着一家大型图书馆,图书按照出版年份分区摆放。现在要建立索引卡片,但明年区域的书架还空着,你会怎么做?

Oracle的部分索引功能就解决了这个问题——它允许你只为有数据的分区创建索引,空分区可以先不建索引。

部分索引的工作原理

  1. 设置索引开关

    在创建分区表时,你可以为每个分区设置"索引开关":

    CREATE TABLE p_table (a int)
    PARTITION BY RANGE (a)
    (PARTITION part_1 VALUES LESS THAN(1000) INDEXING ON,   -- 打开索引
     PARTITION part_2 VALUES LESS THAN(2000) INDEXING OFF); -- 关闭索引
    
  2. 创建部分索引

    create index pi1 on p_table(a) local indexing partial;
    

    这时,Oracle只会为INDEXING ON的分区建立可用的索引。

实际效果对比

场景1:查询有索引的分区

查询:select * from p_table where a = 20;
执行计划:使用索引扫描(快速)

场景2:查询无索引的分区

查询:select * from p_table where a = 1500;
执行计划:全表扫描(较慢)

什么时候需要重建索引?

当你给原本空的分区加载数据后,可以单独重建该分区的索引:

alter index pi1 rebuild partition part_2;

重建后,查询该分区数据时就能使用索引了。

部分索引的优势

  • 提高加载速度:加载数据时关闭索引,避免维护索引的开销
  • 节省存储空间:空分区不建索引,减少空间占用
  • 灵活管理:需要时可以随时重建缺失的索引

这就好比在图书馆中,只为人气高的图书区制作详细的索引卡片,新书区等有需求时再制作索引,既高效又节省资源。

------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

posted @ 2025-11-04 17:05  认真就输  阅读(15)  评论(0)    收藏  举报