5年前面试题引发的“血案”(3)(rowid和执行计划的简单说明)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://oxiaobai.blog.51cto.com/3369332/628860

 双休日笔者去某“土豪”家乡放松了一把,双休日没给大家更新,笔者表示抱歉,所以今天一定还是更新了,虽然公司布置了新的任务下来,但是必须给自己一下压力不是嘛~

题4:一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么?

答:这题很有意思,涉及到的知识点很多也很杂,笔者开始是猜索引比较大,后来才知道,道道有很多。

这题主要还是考rowid。首先看表,a字段建立的索引,那a字段本身在表和索引中都占相同空间。b字段是number(1),那笔者算它2个字节(关于这个笔者会另外成文的,这里学问很大,正的负的都不一样的),c char(2)那自然是2个字节,然后B-Tree索引,Rowid是占6个字节的(分区表的全局索引是10个字节),那rowid > 表里剩下的数据的大小,得出结论索引应该是比表大了。但是这里要注意了,如果a中有NULL值的话又不一样了,因为NULL值是不进入索引的。还要考虑,如果是对表进行过DML操作了,那也会增加index在存储方面的开销。

根据作者的原话,这题还是主要考rowid,知道rowid大小,知道这个东西存在,就差不多算及格了。至于答案,还真没有一个可以说得很完整的。笔者本来想把这个问题分析清楚的,但是无奈,实在涉及太多的点了,索引本身就有很多好说的,种类啊、构成啦和表的关系啊,题目主要还是rowid,rowid就十分复杂了。

 

题5:9i的data guard有几种模式,各有什么差别。

答:笔者前面的文章里提到过咯!这里不再重复罗嗦了!

 

题6:执行计划是什么,查看执行计划一般有哪几种方式。

答:概念题,估计有很多人知道,但是讲不清楚。。”oracle concepts中给出的解释是:

The combination of the steps Oracle uses  
to run a statement is called an execution plan.   笔者认为就是解析了sql语句之后具体的执行步骤的整个集合。   查看的方法么,笔者只用过autotrace,给大家看下。   Execution Plan  
----------------------------------------------------------  
Plan hash value: 1357081020  

--------------------------------------------------------------------------  
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |  
--------------------------------------------------------------------------  
| 0 | SELECT STATEMENT | | 1 | 13 | 2 (0)| 00:00:01 |  
| 1 | TABLE ACCESS FULL| TEST | 1 | 13 | 2 (0)| 00:00:01 |   关于autotrace以后也会单独开出来一篇文章的!现在大家就只要知道,在执行语句之前打入命令set autotrace on,然后执行sql语句的时候就会出现包括执行计划在内的很多统计信息,非常实用的技能!   血案已经是半程系列了,我不知道大家有没有收获,和前面的文章不一样,主要还是理论为主,实践的部分相对比较少一点,我个人也比较喜欢实践的东西,rman也好dg也好,能学到的实战比较多,但是基础很重要,决定一个人今后在技术上的高度,所以我还是选择把血案系列做完没希望能对大家有所启发!

本文出自 “oracle小白前进之路” 博客,请务必保留此出处http://oxiaobai.blog.51cto.com/3369332/628860


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值