第 4 部分 数据仓库和集成特性
数据仓库和数据集市的区别

数据仓库和数据集市的区别数据仓库与数据集市看了很多数据仓库方面的资料,都涉及到了“数据集市”这一说法,刚开始对数据仓库和数据集市的区别也理解得比较肤浅,现在做个深入的归纳和总结,主要从如下几个方面进行阐述:(1) 基本概念(2) 为什么提出数据集市(3) 数据仓库设计方法论(4) 数据集市和数据仓库的区别(5) 仓库建模与集市建模(6) 案例分析:电信CRM数据仓库Bill Inmon说过一句话叫“IT经理们面对最重要的问题就是到底先建立数据仓库还是先建立数据集市”,足以说明搞清楚这两者之间的关系是十分重要而迫切的!通常在考虑建立数据仓库之前,会涉及到如下一些问题:(1) 采取自上而下还是自下而上的设计方法(2) 企业范围还是部门范围(3) 先建立数据仓库还是数据集市(4) 建立领航系统还是直接实施(5) 数据集市是否相互独立一、基本概念数据仓库一词尚没有一个统一的定义,著名的数据仓库专家W. H. Inmon 在其著作《Buildingthe Data Warehouse》一书中给予如下描述:数据仓库(Data Warehouse) 是一个面向主题的(SubjectOri2ented) 、集成的( Integrate ) 、相对稳定的(Non -Volatile ) 、反映历史变化( TimeVariant) 的数据集合用于支持管理决策。
对于数据仓库的概念我们可以从两个层次予以理解,首先,数据仓库用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库;其次,数据仓库是对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。
为最大限度地实现灵活性,集成的数据仓库的数据应该存储在标准RDBMS 中,并经过规范的数据库设计,以及为了提高性能而增加一些小结性信息和不规范设计。
这种类型的数据仓库设计被称为原子数据仓库。
原子数据仓库的子集,又称为数据集市。
数据仓库概述(概念、应用、体系结构)

事务处理 分析处理
DB
从数据 OLTP 数据
DW
从数据 信息(知识) OLAP(DM、OLAM)
18
数据仓库与传统数据库的区别
19
OLTP和OLAP的区别
用户和系统的面向性:
转换描述从操作数据库到数据仓库的映射方法以及转换数据的算法访问权限备份历史存档历史信息传输历史数据获取历史数据访问等等29主题区和信息对象类型包括查询报表图像音频视频等支持数据仓库的其它信息例如信息传输系统包括的预约信息调度信息传送目标的详细描述商业查询对例如数据历史快照版本拥有权数据抽取的审计跟踪数据的使用方法30与数据访问和分析工具的集成31元数据库metadatarepository和工具32主要使用数据来源的物理结构信息企业数据模型和仓库数据模型最终用户最关心两类元数据
4
业务系统不适宜DSS应用
事务处理和分析处理的性能要求和特性不同
事务处理对数据的存取操作频率高而每次操作处理的时 间短; 在分析处理环境中,某个DSS应用程序可能需要连续几 个小时,会消耗大量的系统资源。
数据集成问题 历史数据问题 数据的综合问题(更高粒度)
5
建立数据仓库的投资回报
数据模型:(1)逻辑数据结构,包括为有效进行数据
用的数据集合,是不同于DB的一种新的数据环境, 是DW 扩 展后得到的一个混合形式。四个基本特点:面向主题的、 集成的、可变的、 当前或接近当前的。 库处理由DBMS提供的操作和约束;(2)数据表示系统( 例如,ER图和关系模型)。
25
元数据
数据集成系统和数据集成方法

数据集成系统和数据集成方法一、数据集成系统概述数据集成系统是指将来自不同数据源的数据进行整合和统一管理的系统。
它的主要功能是将分散的、异构的数据源集成到一个统一的数据仓库中,以便用户可以方便地进行数据查询、分析和决策。
数据集成系统的设计和实施需要考虑数据的一致性、完整性、准确性和安全性。
二、数据集成系统的组成部分1. 数据源:数据集成系统需要从多个数据源中获取数据,数据源可以包括关系型数据库、文件系统、Web服务等。
2. 数据集成引擎:数据集成引擎是数据集成系统的核心组件,它负责从不同的数据源中抽取数据,并进行数据清洗、转换和加载。
3. 数据仓库:数据仓库是集成系统中存储数据的核心组件,它可以存储结构化数据、半结构化数据和非结构化数据。
4. 元数据管理:元数据是描述数据的数据,元数据管理负责对数据进行描述和管理,包括数据源的连接信息、数据的结构和语义等。
5. 安全管理:数据集成系统需要确保数据的安全性,包括对数据的访问控制、数据传输的加密和数据备份与恢复等。
三、数据集成方法1. 批量导入:批量导入是一种常见的数据集成方法,它通过将数据从源系统导出为文件,然后再将文件导入到目标系统中。
这种方法适用于数据量较大、更新频率较低的情况。
2. 数据同步:数据同步是指将源系统的数据实时或近实时地同步到目标系统中。
这种方法适用于数据量较小、更新频率较高的情况。
数据同步可以通过数据库的触发器、消息队列等技术实现。
3. 数据集成工具:数据集成工具是一种可视化的工具,可以帮助用户快速构建数据集成流程。
用户只需要通过拖拽和配置的方式,就可以将不同的数据源集成到一起。
常见的数据集成工具有Informatica PowerCenter、IBM DataStage等。
四、数据集成系统的优势1. 数据一致性:数据集成系统可以将来自不同数据源的数据进行整合,保证数据的一致性和准确性。
2. 数据可靠性:数据集成系统可以对数据进行清洗和转换,提高数据的质量和可靠性。
数据集成技术报告

数据集成技术报告数据集成是指将来自不同数据源的数据整合在一起,以便进行综合分析和共享利用的过程。
随着大数据时代的到来,数据集成技术变得越来越重要。
本报告将介绍数据集成的概念、常见的数据集成技术,并对其应用领域和挑战进行探讨。
一、概述数据集成是将来自多个数据源的数据整合在一起,形成一个统一的数据视图。
在数据集成过程中,需要解决数据格式、数据结构、数据语义以及数据冲突等问题。
数据集成的目标是实现数据的一致性、完整性和准确性,以提供给用户更全面、可靠的数据资源。
二、常见的数据集成技术1. 数据仓库数据仓库是一种面向主题的、集成化的、相对稳定的数据存储,用于支持企业的决策分析和业务报告。
数据仓库能够将来自不同数据源的数据进行抽取、转换和加载,形成适合决策支持的数据模型。
2. ETL技术ETL(Extract, Transform, Load)技术是数据仓库建设的关键技术之一。
通过ETL技术,可以从不同的数据源中抽取数据,进行数据清洗、转换和整合,最后加载到数据仓库中。
ETL过程涉及数据的读取、转换和写入等复杂处理,需要考虑数据质量、性能和安全等方面的问题。
3. 数据虚拟化数据虚拟化是一种将来自多个数据源的数据逻辑上整合在一起,用户可以通过一个统一的接口访问这些数据源的技术。
与传统的数据物理存储不同,数据虚拟化技术解耦了数据的物理存储和逻辑访问,提供了更灵活和实时的数据访问能力。
4. 数据标准化数据标准化是指通过对数据进行清洗、转换和规范化,使其符合特定的标准和格式,以便于进行数据集成和共享。
数据标准化可以解决数据的不一致性、重复性和冗余性等问题,提高数据的质量和可用性。
三、应用领域与挑战数据集成技术在各个领域都有广泛的应用,如金融、医疗、交通等。
在金融领域,数据集成可以将来自不同银行的数据整合在一起,进行风险评估和客户分析;在医疗领域,数据集成可以将来自不同医院和医疗机构的数据整合,提供更全面和准确的医疗服务。
charpter4数据仓库与CR课件

前端工具
• 前端工具主要包括各种报表工具、查询工 具、数据分析工具、数据挖掘工具以及各 种基于数据仓库或数据集市的应用开发工 具。其中数据分析工具主要针对OLAP服务 器,报表工具、数据挖掘工具主要针对数 据仓库。
charpter4数据仓库与CR课件
• 4.2 CRM中的数据仓库
数据仓库系统体系结构
charpter4数据仓库与CR课件
数据源
• 数据源是数据仓库系统的基础,是整个系 统的数据源泉。通常包括企业内部信息和 外部信息。内部信息包括各种业务处理数 据和各类文档数据。外部信息包括各类法 律法规、市场信息和竞争对手的信息等等。
charpter4数据仓库与CR课件
数据的存储与管理
• 事务处理和分析处理的性能特性不同 • 数据集成问题 • 数据动态集成问题 • 历史数据问题 • 数据的综合问题 ① 操作繁简问题
charpter4数据仓库与CR课件
数据仓库的概念和特征
• 著名的数据仓库专家W.H.Inmon在其著作 《Building the Data Warehouse》一书中 给予如下描述: 数据仓库(Data Warehouse)是一个 面向主题的(Subject Oriented)、集成 的(Integrate)、相对稳定的(NonVolatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。
charpter4数据仓库与CR课件
OLAP服务器
• OLAP服务器对分析需要的数据进行有效集 成,按多维模型予以组织,以便进行多角 度、多层次的分析,并发现趋势。其具体 实 现 可 以 分 为 : ROLAP 、 MOLAP 和 HOLAP 。 ROLAP 基 本 数 据 和 聚 合 数 据 均 存 放 在 RDBMS 之中;MOLAP基本数据和聚合数据均存放于 多 维 数 据 库 中 ; HOLAP 基 本 数 据 存 放 于 RDBMS之中,聚合数据存放于多维数据库中。
数据仓库的基本架构

数据仓库的基本架构数据仓库是一个用于集成、存储和管理企业中各种数据的系统。
它的设计和架构对于数据的有效管理和分析至关重要。
在本文中,我们将详细介绍数据仓库的基本架构,包括数据仓库的组成部分、数据仓库的层次结构和数据仓库的实施步骤。
一、数据仓库的组成部分1. 数据源:数据仓库的数据源可以包括企业内部的各种数据库、文件、日志等。
数据源的选择和数据提取的方法取决于企业的需求和数据的特点。
2. 数据提取和转换:数据提取和转换是将数据从数据源中提取出来并进行清洗、转换的过程。
这个过程包括数据的抽取、清洗、转换和加载等步骤,以确保数据的质量和一致性。
3. 数据存储:数据存储是数据仓库的核心组成部分,用于存储从数据源中提取出来的数据。
常见的数据存储方式包括关系型数据库、多维数据库和分布式文件系统等。
4. 元数据管理:元数据是描述数据的数据,用于帮助用户理解和使用数据仓库中的数据。
元数据管理包括元数据的收集、存储和维护等过程。
5. 数据访问和查询:数据仓库的用户可以通过各种方式访问和查询数据,包括SQL查询、OLAP分析、报表生成等。
数据访问和查询的方式取决于用户的需求和技术的支持。
二、数据仓库的层次结构数据仓库的层次结构包括三个主要层次:操作型数据层、集成型数据层和决策型数据层。
1. 操作型数据层:操作型数据层是数据仓库的最底层,用于存储企业内部各种操作型数据,包括交易数据、日志数据等。
这些数据通常以原始的、细粒度的形式存储。
2. 集成型数据层:集成型数据层是数据仓库的中间层,用于将操作型数据进行整合和转换,以满足用户的查询和分析需求。
在这一层次上,数据会进行清洗、聚合和转换等处理。
3. 决策型数据层:决策型数据层是数据仓库的最上层,用于存储已经经过整合和转换的数据,供用户进行决策分析和业务报告等。
在这一层次上,数据会根据用户的需求进行汇总、计算和分析等操作。
三、数据仓库的实施步骤1. 确定需求:在实施数据仓库之前,首先需要明确企业的需求和目标。
常州大学《数据仓库原理与实现》2023-2024学年第一学期期末试卷

常州大学《数据仓库原理与实现》2023-2024学年第一学期期末试卷《数据仓库原理与实现》考试内容:《数据仓库原理与实现》;考试时间:120分钟;满分:100分;姓名:——;班级:——;学号:——一、填空题(每题3分,共30分)1. 数据仓库是一种面向企业级数据分析的数据库系统,其主要目的是整合并存储企业各个业务系统的数据,形成一个统一的数据存储平台,以支持企业各级领导和业务人员的数据分析和决策。
2. 数据仓库系统的体系结构包括_____、ETL、_____、OLAP和前端工具等几个部分。
3. 数据的独立性包括数据的物理独立性和数据的_____。
4. 数据的物理独立性是指当数据的存储结构(或内模式)改变时,通过系统内部的自动映象功能或转换功能,保持了数据的全局逻辑结构(或模式)不变。
5. 数据仓库共有四个特性,分别是面向主题、集成的、_____和随时间变化。
6. 分布式数据库最基本的三个特征是:非集中式管理、_____和本地自治。
7. 关系数据模型的基本数据结构是_____。
8. SQL语言具有对数据的定义、_____、操纵和控制等四个方面的功能。
9. 数据模型由三部分组成:数据结构、数据操作和_____。
10. 在UML中,通信图主要用于描述对象在空间中如何交互,即除了动态交互,它也直接描述了对象是如何链接在一起的。
二、单项选择题(每题2分,共20分)1. 下列哪项是长期存储在计算机内的有组织,可共享的数据集合?A. 数据库管理系统B. 数据库系统C. 数据库D. 文件组织2. SQL语言中授权的操作是通过哪个语句实现的?A. CREATEB. REVOKEC. GRANTD. INSERT3. 下列聚合函数中不忽略空值(null)的是?A. SUM(列名)B. MAX(列名)C. COUNT(*)D. AVG(列名)4. 位于用户与操作系统之间的一层数据管理软件是?A. 数据库管理系统B. 数据库系统C. 数据库D. 数据库应用系统5. 分布式数据库系统中,下列哪个特征表明数据可以在不同地理位置上分布?A. 集中式管理B. 高可用性C. 本地自治D. 非集中式管理6. 关系数据模型的基本数据结构是?A. 索引B. 关系C. 数据项D. 数据源7. 下列哪个选项不属于数据库的特点?A. 数据共享B. 数据独立性高C. 数据冗余很高D. 数据完整性8. 在数据库系统中,元数据是指?A. 数据结构的描述B. 数据的来源C. 基本数据D. 数据项的描述9. 关系数据库实现数据之间联系的方法是?A. 候选码B. 外码C. 超码D. 索引10. 下列哪个阶段的主要任务是调查和分析用户的应用需要,为概念结构设计做好充分准备?A. 需求分析B. 逻辑设计C. 物理设计D. 运行设计三、简答题(每题10分,共30分)1. 解释数据仓库的主要特点和功能。
数据库的多源数据融合与集成技术

数据库的多源数据融合与集成技术多源数据融合与集成技术在数据库领域中扮演着重要的角色。
随着数据规模的不断增大和多样化的数据源的增加,如何高效地整合和融合来自不同数据源的数据变得至关重要。
本文将探讨数据库的多源数据融合与集成技术的意义、挑战以及相关的方法和工具。
首先,多源数据融合与集成技术对于数据库的重要性不言而喻。
在当今信息爆炸的时代,各个企业和组织拥有的数据源越来越多,并且这些数据源通常来自于不同的系统和平台。
多源数据融合与集成技术可以将这些异构的数据整合到一个统一的数据库中,从而方便用户进行数据的查询和分析。
同时,通过数据融合与集成技术,用户可以消除不同数据源间的数据冗余和一致性问题,提高数据的质量和可靠性。
然而,实现多源数据融合与集成并不是一件容易的事情,面临着许多挑战。
首先,多源数据通常存在语义和架构上的差异,这就要求我们解决数据的语义映射和架构转换的问题。
其次,由于数据量的不断增大和数据源的变化,数据的实时性和更新性也成为了一个挑战。
此外,数据安全和隐私保护也是多源数据融合与集成技术面临的重要问题。
因此,我们需要开发出高效和安全的算法和工具来应对这些挑战。
为了解决这些挑战,数据库领域提出了多种多源数据融合与集成技术。
一种常见的方法是使用元数据库(Metadata)来描述和管理数据。
元数据库是描述数据元素特性的数据库,它可以用来对数据源进行建模、查询以及数据转换。
另一种方法是使用数据仓库(Data Warehouse)和数据集市(Data Mart)来集成数据。
数据仓库和数据集市是用于存储和管理大量数据的数据库系统,它们可以对数据进行抽取、转换和加载(ETL)。
同时,数据仓库和数据集市还提供了强大的数据查询和分析功能,便于用户进行数据挖掘和决策支持。
此外,还有一些基于模式匹配和数据挖掘的方法用于数据融合和集成。
这些方法通过分析数据的模式和关系,自动发现和生成数据映射、转换和集成规则,从而实现不同数据源之间的数据融合。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4 部分:数据仓库和集成特性用于更高效管理物化视图、查询重写、可传输表空间以及表分区的新特性使数据仓库变得更加强大且占用资源更少。
这一部分涉及:·在没有MV 日志的情况下进行分区更改跟踪·使用多个MV 进行查询重写·通过备份实现可传输表空间·对已分区的按索引组织的表进行快速的分区分割·通过联机重新定义进行LONG 到LOB 的转换·联机重新组织单个分区·逐个分区地删除表分区更改跟踪:不需要MV 日志要了解此增强功能,首先必须了解物化视图(MV) 刷新过程中的分区修整概念。
假设基于列ACC_MGR_ID 对表ACCOUNTS 进行了分区,每个ACC_MGR_ID 值一个分区。
您根据ACCOUNTS 创建了一个名为ACC_VIEW 的MV,该MV 也根据列ACC_MGR_ID 进行了分区,每个ACC_MGR_ID 一个分区,如下图所示:假设已经更新了表ACCOUNTS 中的记录,但只在分区P1 中进行了此更新。
要快速刷新此MV,您只需刷新分区P1 而非整个表,这里正是与ACC_MGR_ID 相关的数据所在的分区。
Oracle 自动执行此任务,通过一个名为分区更改跟踪(PCT) 的特性跟踪对分区的更改。
但有一个问题需稍加注意:要在快速刷新的过程中启用PCT,必须创建MV 日志,当表中的行发生变化会填充这些日志。
发出刷新命令后,刷新进程将读取MV 日志以识别这些更改。
不用说,该要求增加了操作的总执行时间。
此外,附加的插入操作将消耗CPU 周期和I/O 带宽。
幸好,在Oracle 数据库10g第2 版中,PCT 不需要MV 日志即可工作。
让我们看一看它的作用方式。
首先,确认表ACCOUNTS 中没有MV 日志。
SQL> select *2 from dba_mview_logs3 where master = 'ACCOUNTS';no rows selected现在,更新该表中的某个记录。
update accounts set last_name = '...'where acc_mgr_id = 3;该记录位于分区P3 中。
现在,您就可以刷新此MV 了。
但首先记录表ACCOUNTS 所有段的段级统计信息。
稍后,您将使用这些统计信息了解使用了哪些段。
select SUBOBJECT_NAME, value from v$segment_statisticswhere owner = 'ARUP'and OBJECT_NAME = 'ACCOUNTS'and STATISTIC_NAME = 'logical reads'order by SUBOBJECT_NAME/SUBOBJECT_NAME VALUE------------------------------ ----------P1 8320P10 8624P2 12112P3 11856P4 8800P5 7904P6 8256P7 8016P8 8272P9 7840PMAX 25611 rows selected.使用快速刷新刷新物化视图ACC_VIEW。
execute dbms_mview.refresh('ACC_VIEW','F')'F'参数指示快速刷新。
但如果表没有MV 日志,它是否可以起作用?刷新完成后,再次检查表ACCOUNTS 的段统计信息。
结果如下所示:SUBOBJECT_NAME VALUE------------------------------ ----------P1 8320P10 8624P2 12112P3 14656P4 8800P5 7904P6 8256P7 8016P8 8272P9 7840PMAX 256这些段统计信息显示了在一个逻辑读取过程中选择的段。
由于这些统计信息是累积的,因此您必须查看值(而非绝对值)中的更改。
如果仔细查看以上值,您便会发现只有分区P3 的值发生了变化。
因此,在刷新过程中只选择了分区P3 而非整个表,确认PCT 能否在表即使没有MV 日志的情况下工作。
即使在基表没有MV 日志的情况下也可以快速刷新MV 的能力是一个强大而有用的特性,从而允许您可以在已分区的MV 中执行快速刷新而不会增加性能开销。
我认为,该特性是Oracle 数据库10g第2 版中最有用的数据仓库增强功能。
使用多个MV 进行查询重写Oracle8i中引入的查询重写特性在数据仓库开发人员和DBA 中轰动一时。
从本质上而言,它将用户查询重写为从MV 而非表中进行选择以利用现成的摘要。
例如,请考虑以下一家大型连锁酒店的数据库中的三个表。
SQL> DESC HOTELSName Null?Type----------------------------------------- -------- ------------- HOTEL_ID NOT NULL NUMBER(10)CITY VARCHAR2(20) STATE CHAR(2) MANAGER_NAME VARCHAR2(20) RATE_CLASS CHAR(2)SQL> DESC RESERVATIONSName Null?Type----------------------------------------- -------- ------------- RESV_ID NOT NULL NUMBER(10) HOTEL_ID NUMBER(10)CUST_NAME VARCHAR2(20) START_DATE DATEEND_DATE DATERATE NUMBER(10)SQL> DESC TRANSName Null?Type----------------------------------------- -------- ------------- TRANS_ID NOT NULL NUMBER(10)RESV_ID NOT NULL NUMBER(10) TRANS_DATE DATEACTUAL_RATE NUMBER(10)表HOTELS 保存酒店的相关信息。
当顾客预订酒店时,将在表RESERVATIONS(包含房间价格报价)中创建一个记录。
当顾客在酒店结帐时,将在另一个表TRANS 中记录现金交易。
但在结帐前,酒店可能决定根据订房情况、升级、优惠等因素向顾客提供不同的房价。
因此,最终的房价可能与预订时的报价不同,而且可以每天都各不相同。
为正确记录这些价格变化,表TRANS 有一行专门用来保存每天的房价信息。
为缩短查询响应时间,您可能决定根据用户发出的不同查询构建MV,如:create materialized view mv_hotel_resvrefresh completeenable query rewriteasselect city, resv_id, cust_namefrom hotels h, reservations rwhere r.hotel_id = h.hotel_id;和create materialized view mv_actual_salesrefresh completeenable query rewriteasselect resv_id, sum(actual_rate) from trans group by resv_id;因此,如果设置了某些参数(如query_rewrite_enabled = true),则类似如下所示的查询select city, cust_namefrom hotels h, reservations rwhere r.hotel_id = h.hotel_id;将重写为select city, cust_namefrom mv_hotel_resv;。
您可以通过运行该查询并启用自动跟踪来确认MV。
SQL> set autot traceonly explainSQL> select city, cust_name2> from hotels h, reservations r3> where r.hotel_id = h.hotel_id;Execution Plan----------------------------------------------------------0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=3 Card=80 Bytes=2480)1 0 MAT_VIEW ACCESS (FULL) OF 'MV_HOTEL_RESV' (MAT_VIEW) (Cost=3 Card=80 Bytes=2480)注意,查询是如何从物化视图MV_HOTEL_RESV 而非表HOTELS 和RESERVATIONS 中进行选择的。
这正是您所需要的。
同样,当您编写一个查询来汇总每个预订编号的实际价格时,将使用物化视图MV_ACTUAL_SALES 而非表TRANS。
我们来采用一个不同的查询。
如果要查明每个城市的实际销售额,则将发出select city, sum(actual_rate)from hotels h, reservations r, trans twhere t.resv_id = r.resv_idand r.hotel_id = h.hotel_idgroup by city;注意此查询结构:从MV_ACTUAL_SALES 中,您可以获得RESV_ID 和预订的总销售额。
从MV_HOTEL_RESV 中,您可以获得CITY 和RESV_ID。
您能将这两个MV 连接在一起吗?当然可以,但在Oracle 数据库10g第2 版之前,查询重写机制只使用两个MV 中的一个(而非两个)自动重写用户查询。
以下是Oracle9i数据库中的执行计划输出。
您可以看到,只使用了MV_HOTEL_RESV 和TRANS 的整表扫描。
Execution Plan----------------------------------------------------------0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=8 Card=6 Bytes=120)1 0 SORT (GROUP BY) (Cost=8 Card=6 Bytes=120)2 1 HASH JOIN (Cost=7 Card=516 Bytes=10320)3 2 MAT_VIEW REWRITE ACCESS (FULL) OF 'MV_HOTEL_RESV' (MAT_VIEW REWRITE)(Cost=3 Card=80 Bytes=1040)4 2 TABLE ACCESS (FULL) OF 'TRANS' (TABLE)(Cost=3 Card=516 Bytes=3612)即使MV 可用,该方法也将生成一个非最优的执行计划。