|
fangjinhuoche 发表于 2012-5-4 15:25 ![]()
是入门级。
扫盲阶段,是找的db2文档学的,其实只要肯动手上机,这关还是不难的。当然,我也是对oracle比 ...
“如果在学第二种数据库时,如果遇到学第一种数据库时同样的问题时,感觉挫折感比较强。” 呵呵,我相信有不少人会有同感。
至于你说的索引问题,其实Oracle与DB2考虑索引上区别不大。索引,就可以看作是一本书的目录,是提高数据访问效率的最重要的手段之一。Oracle数据库中大部分索引都可以直接部署在DB2上,用不着修改。至于需要注意的地方以及区别,有几个方面。
包含字段索引:Oracle数据库不支持这种索引,这是DB2数据库的一个重要特性:允许开发人员在创建唯一索引的时候,将其他字段也包含进来。如果查询涉及的字段都在包含字段中的话,使用包含字段索引能够提升数据访问的性能。这是由于所包含进来的字段和索引存储在一起,DB2将不再需要从数据页中获取数据,而可以直接从索引页中取出所包含字段的数据。
聚集索引:尽管Oracle和DB2都支持聚集索引,但意义是不同的。在Oracle中,聚集索引的意思是建在一个聚集或者表分区(Table Partitioning)上的索引。在DB2中,如果在目标表上创建索引的时候使用了聚集选项,那么意味着该目标表会对数据按照索引的顺序聚集。换句话说,该目标表中的数据按照和索引相同的顺序重新组织了数据。
基于函数的索引:这个比较有趣。对于基于函数的索引,Oracle和DB2都提供了支持,只是具体实现上有所不同。在实现上,Oracle计算函数或者表达式的值,随后将最终结果存储在索引中。DB2创建计算列用来存放函数或表达式产生的结果,并且为该列创建索引。
表分区(Table Partitioning)索引:表分区按照一个或多个字段将数据分布到多个表空间上。事实上,Oracle和DB2都支持在表分区上创建分区索引或非分区索引,或者是两者同时建立。
至于MDC块索引,这是DB2的特点。MDC块索引就是为每个块建立索引,这带来两个优点:
第一,MDC 块索引意味着需要的 RID 索引更少,这使得用于索引的存储空间减少了。
第二,MDC 块索引对于查询是完全透明的。这是由于新记录插在MDC表中具有相同值的记录附近的位置,所以无需运行REORG实用程序,数据仍然是聚合的,这使得可以通过块索引总是能定位到记录所在的物理块。
位图索引:Oracle支持位图索引,适用于具有很少键值的索引,通常在数据仓库中使用较多。但在DB2中,位图索引是不需要的。当DB2执行某些查询时,DB2优化器能够动态地创建位图索引,无需开发人员在应用中定义。 |
|