读书笔记:什么是部分索引?
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。
本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。
什么是部分索引?
想象一下,你管理着一家大型图书馆,图书按照出版年份分区摆放。现在要建立索引卡片,但明年区域的书架还空着,你会怎么做?
Oracle的部分索引功能就解决了这个问题——它允许你只为有数据的分区创建索引,空分区可以先不建索引。
部分索引的工作原理
-
设置索引开关
在创建分区表时,你可以为每个分区设置"索引开关":
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); -- 关闭索引 -
创建部分索引
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)
浙公网安备 33010602011771号