这篇文章主要讲解了“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)注意动态采样与filter2 索引唯一扫描(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)注意动态采样的消失与access3 索引范围扫描(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 /*+index(t2 t2_objectid)*/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 /*+index(t2,t2_id_name)*/object_id,object_name from t2;select * from table(dbms_xplan.display());———————为啥,哈哈哈哈哈哈,not null4) object_id字段设置成not Null,走索引快速扫描alter table t2 modify object_id not null;explain plan for select /*+index(t2,t2_id_name)*/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 * fro免费主机域名m table(dbms_xplan.display());–注意索引快速全扫描无序,索引全扫描有序感谢各位的阅读,以上就是“oracle索引相关知识有哪些”的内容了,经过本文的学习后,相信大家对oracle索引相关知识有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云技术,小编将为大家推送更多相关知识点的文章,欢迎关注!
这篇文章主要介绍oracle中如何实现静默安装和手动建库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 之前都是复制粘贴参数! 这次了解了两个关于内存的参数介绍shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用…