数据仓库工程师面试题

一.数据库开发

1.Oracle数据库,视图与表的区别?

       表是作为oracle数据库存储数据的一种数据结构,视图是从已存在表上抽出逻辑相关的数据集合,其本身和表的区别不大,都是对数据一种存储,只不过我们可以在已有表的基础上抽取一部分我们想要的数据,视图是已经编译好的sql语句。

       表有实际的物理记录,视图没有,表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改,表是内模式,视图是外模式,视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构,视图的建立和删除只影响视图本身,不影响对应的基本表。

2.普通视图与物化视图的区别?

        普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。

       物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。

       普通视图和物化视图是两个概念,说区别是放在一起让大家更好的理解,

       基本概念,普通视图是不存储任何数据的,是在查询中转换为对应的定义SQL去查询,

       物化视图是将数据转换为一个表,实际存储着数据,这样查询数据,就不用关联一大堆表,如果表很大的话,会在临时表空间内做大量的操作。

3.Oracle数据库,有哪几类索引,分别有什么特点?

(1)b-tree索引

Oracle数据库bai中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE   INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。

(2)位图索引(bitmap index)

位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。

(3)基于函数的索引

比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。

(4)分区索引和全局索引

这2个是用于分区表的时候。前者是分区内索引,后者是全表索引

(5)反向索引(REVERSE)

这个索引不常见,但是特定情况特别有效,比如一个varchar(5)位字段(员工编号)含值(10001,10002,10033,10005,10016..)这种情况默认索引分布过于密集,不能利用好服务器的并行,但是反向之后10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。

(6)HASH索引

HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。使用HASH索引必须要使用HASH集群。

4.Union与Union All的区别?

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

5.对游标的理解?游标的分类?使用方法?

(1)概念:

       可以把游标当作一个指针,它可以指

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员喵姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值