我的编程空间,编程开发者的网络收藏夹
学习永远不晚

oracle索引相关知识有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

oracle索引相关知识有哪些

这篇文章主要讲解了“oracle索引相关知识有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle索引相关知识有哪些”吧!

一、什么是执行计划

所谓执行计划,就是在执行一个SQL前,做出的一份数据库认为最佳的方案。好比在北京上班,是做地铁去还是公交车亦或开车自驾等等。如果做地铁,需要从哪儿换成之类的,... ...从各种方案中选择一个自认为最佳的方案。这个方案在数据库里面即为执行计划。己认为最合适的方案。

二、解析的概念

解析就是为sql生成执行计划的过程。解析分为软解析和硬解析。

三、统计信息与动态采样

统计信息的作用就是为解析sql提供的数据支持,也就是为了更好的选择执行计划。简单说就是统计信息反映表中数据分布的情况。

        如果统计信息没有收集,数据库在解析sql的过程中会根据一定的比例去表中采样,采样的结果作为sql执行路径所需代价的依据。这就是动态采样。

四、NULL这个特殊的东西

NULL是个特殊的一个存在。

        从定义上来讲,NULL就是一个不确定的数据。所以无论对NULL做任何操作,结果还是NULL。

        另外,对于oracle数据库来说,索引里面没有null,索引里面没有NULL会有什么影响呢?哈哈,见“索引快速全扫描”部分。

五、索引相关执行计划(补充索引选择性的概念)

1 全表扫描(full table scan)

1) 测试数据

create table t1 as select * from dba_objects;

2)看执行计划

explain plan for select * from t1 where t1.object_id=19791;

select * from table(dbms_xplan.display());

3)注意动态采样与filter

2 索引唯一扫描(index unique scan)

1)创建唯一性索引

create unique index t1_objectid on t1(object_id);

2)收集统计信息

exec dbms_stats.gather_table_stats('ZQ','T1',cascade=>true);

3) 查看执行计划

explain plan for select * from t1 where t1.object_id=19791;

select * from table(dbms_xplan.display());

4)注意动态采样的消失与access

3 索引范围扫描(index range scan)

1)测试数据

create table t2 as select * from dba_objects;

2) 创建非唯一性索引

create index t2_objectid on t2(object_id);

3) 收集统计信息

exec dbms_stats.gather_table_stats('ZQ','T2',cascade=>true);

4)查看执行计划

explain plan for select * from t2 where t2.object_id=19791;

select * from table(dbms_xplan.display());

5)查看执行计划

explain plan for select * from t1 where t1.object_id>131790;

select * from table(dbms_xplan.display());

4 索引快速全扫描(index fast full scan)

1) 查看执行计划

explain plan for select object_id from t2 order by object_id;

select * from table(dbms_xplan.display());

            --走全表扫描

                insert into t2 select * from t2;

                commit;

insert into t2 select * from t2;

                commit;

         2) 收集统计信息,然后看执行计划

exec dbms_stats.gather_table_stats('ZQ','T1',cascade=>true); 

explain plan for select object_id from t2 order by object_id;

select * from table(dbms_xplan.display());

            --走全表扫描

3) 创建组合索引,并收集统计信息

create index t2_id_name on t2(object_id,object_name);

exec dbms_stats.gather_table_stats('ZQ','T2',cascade=>true);

explain plan for select object_id,object_name from t2;

select * from table(dbms_xplan.display());

   --走全表扫描

explain plan for select object_id,object_name from t2;

select * from table(dbms_xplan.display());

---------------------为啥,哈哈哈哈哈哈,not null

4) object_id字段设置成not Null,走索引快速扫描

alter table t2 modify object_id not null;

explain plan for select object_id,object_name from t2;

select * from table(dbms_xplan.display());

4) 使用count,索引全扫描

explain plan for select  count(object_id) from t2 ;

select * from table(dbms_xplan.display());

5 索引全扫描(index full scan)

1)查看执行计划

explain plan for select t1.object_id from t1 order by t1.object_id;

select * from table(dbms_xplan.display());

--注意索引快速全扫描无序,索引全扫描有序

感谢各位的阅读,以上就是“oracle索引相关知识有哪些”的内容了,经过本文的学习后,相信大家对oracle索引相关知识有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

oracle索引相关知识有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring Cache相关知识有哪些

这篇文章将为大家详细讲解有关Spring Cache相关知识有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介 Spring 从 3.1 开始定义了 org.springframework.cach
2023-06-15

HashMap相关知识点有哪些

本篇内容介绍了“HashMap相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HashMap 和 HashSet 是 Java
2023-06-17

YARN相关知识点有哪些

本篇内容介绍了“YARN相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!YARN产生背景为什么会产生YRAN?这个与MapRe
2023-06-19

Java IO相关知识有哪些

这篇文章主要介绍了Java IO相关知识有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、IO底层是怎么回事?操作系统就是管家,电脑的设备就是资源,如果进程先要操作资源
2023-06-15

编程热搜

目录