数据仓库面试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据仓库及BI工程师面试题集锦

前言

1、介绍一下项目经验、项目中的角色。

一、数据库

1、Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作

用?

i.视图与表的区别

1.1、视图是已经编译好的sql语句。而表不是

2.视图没有实际的物理记录。而表有。

3.表是内容,视图是窗口

4.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,

表可以及时四对它进行修改,但视图只能有创建的语句来修改ii.物化视图与视图区别

1.物化视图和视图差别非常大,不是几句能说清物化视图是自动刷新或者

手动刷新的,视图不用刷新物化视图也可以直接update,但是不影响b

ase table,对视图的update反映到base table上物化视图主要用于远

程数据访问,物化视图中的数据需要占用磁盘空间,视图中不保存数据。

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

a) 1.单列索引与复合索引

一个索引可以由一个或多个列组成,用来创建索引的列被称为“索引列”。

单列索引是基于单列所创建的索引,复合索引是基于两列或者多列所创建的索引。

2.唯一索引与非唯一索引

唯一索引是索引列值不能重复的索引,非唯一索引是索引列可以重复的索引。

无论是唯一索引还是非唯一索引,索引列都允许取NULL值。默认情况下,Oracle 创建的索引是不唯一索引。

3.B树索引

B树索引是按B树算法组织并存放索引数据的,所以B树索引主要依赖其组织并存放索引数据的算法来实现快速检索功能。

4.位图索引

位图索引在多列查询时,可以对两个列上的位图进行AND和OR操作,达到更好的查询效果。

5.函数索引

Oracle中不仅能够直接对表中的列创建索引,还可以对包含列的函数或表达式创建索引,这种索引称为“位图索引”。

3、Union与Union All的区别?

a)Union会对查询结果进行排序去重,效率比union all 低,union all只是两个查询

集的合并操作。建议使用Union all,查询出来后再对数据进行去重操作。

4、对游标的理解?游标的分类?使用方法?

游标是映射在结果集中一行数据的位置实体,有了游标,用户就可以访问结果集中的任何一条数据。游标分为静态游标和REF游标,静态游标分为显示游标和隐式游标,

显示游标使用步骤是声明游标,打开游标,获取记录,关闭游标。所有的DML语句为隐式游标,可以从游标的属性获得sql语句的信息。REF游标是动态关联结果集的临时对象,使用步骤也是先要进行声明游标,然后打开游标,获取记录,关闭游标。

5、如何查找和删除表中的重复数据?给出方法或SQL。

查询表中重复数据。

Select * from people where id in (Select id from people group by id having count(id)>1);

Delete from people where id in(select id from people group by id having count(id)>1) and rowid not in (select min(rowid) from people group by id hacing count(id)>1);

创建索引有哪些需要注意的要点?

a)一般来说,不需要为比较小的表创建索引(数据占用存储空间小)

b)即使是大表,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为

其建立索引的必要。

c)如对于一些重复内容比较少的列,特别是对于那些定义了唯一约束的列。在这些列

上建立索引,往往可以起到非常不错的效果。

d)数据库管理员,需要隔一段时间,如一年,对数据库的索引进行优化。该去掉的去

掉,该调整的调整,以提高数据库的性能。

e)通常来说,表的索引越多,其查询的速度也就越快。但是,表的更新速度则会降低。

这主要是因为表的更新(如往表中插入一条记录)速度,反而随着索引的增加而增加。

f)对于一些数据仓库或者决策型数据库系统,其主要用来进行查询。

g)位图索引。基数是位图索引中的一个基本的定义,它是指数据库表中某个字段内容

中不重复的数值。

6、Oracle数据库中,有哪几种分区?各自特点是什么?作用是什么?分区索引的分

类和作用?

范围分区,散列分区,复合分区,索引分区

7、表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql。

select * from (select c.*,rownum as rn from (select * from t order by c) c) where rn

berween 21 and 30;

8、怎样优化数据库?

i.首先应确定那里出现性能问题,一般一个调度时常都会有时间log

记录,若发现某个调度时间过长,那么我们可以使用oracle自带

profiler进行诊断出该模块出现性能问题的sql。

ii.找出问题sql后对表大小进行分析,知道哪些是大表和小表。

iii.查看该sql执行计划(用autotrace)即可大概找出问题原因。

iv.查询方面:查看是否未走索引,或sql写法中有运算或<> 等影响走索引条件,或并未对关键关联字段创建索引,必要情况重建索引。

v.删除更新情况,尽量使用rowid。

9、华为开发流程是什么(CMMI)

a)华为接口人或业务提出需求文档。

b)我们根据需求文档写入概要设计。

c)根据概要设计进行开发。

d)开发完成后进行ut测试。

相关文档
最新文档