数据库知识
- 格式:doc
- 大小:130.50 KB
- 文档页数:18
数据库基础知识第⼀章概念1、数据:描述事物的符号记录称为数据。
特点:数据和关于数据的解释不可分。
2、数据库:长期存储在计算机内、有组织、可共享的⼤量的数据的集合。
数据库中的数据按照⼀定的数据模型组织、描述和存储,具有较⼩的冗余度、较⾼的数据独⽴性和易扩展性,并可为各种⽤户共享。
特点:永久存储、有组织、可共享。
3、数据库管理系统(DBMS):位于⽤户与操作系统之间的⼀层数据管理软件。
主要功能:数据定义功能(DDL);数据组织、存储和管理;数据操纵功能(DML);数据库的事务管理和运⾏管理;数据库的建⽴和维护功能;其他功能。
4、数据库系统(DBS):由数据库、数据库管理系统(及其开发⼯具)、应⽤系统、数据库管理员构成。
5、数据管理技术三个阶段:⼈⼯管理、⽂件系统、数据库系统。
6、两类数据模型:概念模型(⼜叫信息模型);逻辑模型、物理模型7、数据模型的组成要素:数据结构、数据操纵和数据的完整性约束条件。
8、概念模型:⽤于信息世界的建模,是现实世界到信息世界的第⼀层抽象,是数据库设计⼈员进⾏数据库设计的有⼒⼯具也是数据库设计⼈员与⽤户之间进⾏交流的语⾔。
9、信息世界中的概念:实体、属性、码、域、实体型、实体集、联系;两个实体之间的联系⼜分为⼀对⼀,⼀对多,多对多。
10、E-R图:表⽰实体型、属性和联系的⽅法,实体型⽤矩形,属性⽤椭圆,联系⽤菱形。
11、关系的完整性约束条件包括三⼤类:实体完整性、参照完整性、和⽤户⾃定义完整性。
12、数据库系统的三级模式结构:模式、外模式、内模式。
数据库的⼆级映像:外模式/模式映像,模式/内模式映像。
第⼆章关系数据库1、关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2、关系操作:查询操作和插⼊、删除、修改操作两⼤部分。
查询操作⼜可分为选择、投影、连接、除、并、差、交、笛卡尔积等。
3、实体完整性:主属性不能为空;参照完整性:关系与关系间的引⽤(⼀般为两张表,或者⼀张表内部也存在);⽤户⾃定义的完整性。
数据库知识点总结pdf数据库是用于存储、管理和检索大量数据的系统。
以下是一些数据库的常见知识点总结:1. 数据库类型:- 关系型数据库(RDBMS):采用表格结构来组织数据,使用SQL语言进行操作,如MySQL、Oracle、SQL Server等。
- 非关系型数据库(NoSQL):不使用表格结构,可以按照键值对、文档、列族等方式存储数据,如MongoDB、Redis、Cassandra等。
2. 数据库模型:- 层次模型:数据以树形结构组织,父节点与子节点之间有层级关系。
- 网状模型:数据以网状结构组织,允许一个节点有多个父节点。
- 关系模型:数据以二维表格形式组织,通过键值关联实现数据之间的关系。
3. 数据库设计:- 实体-关系模型(ERM):通过实体和实体之间的关系来描述数据结构,包括实体、属性和关系。
- 数据库范式:用于规范化数据库结构,减少数据冗余和依赖。
- 主键和外键:主键用于唯一标识表中的每一行数据,外键用于建立表与表之间的关系。
4. SQL语言:- 数据定义语言(DDL):用于定义数据库结构,如创建表、修改表结构等。
- 数据操作语言(DML):用于对数据库中的数据进行增删改查操作,如插入数据、更新数据、删除数据等。
- 数据查询语言(DQL):用于查询数据库中的数据,如SELECT语句。
5. 数据库索引:- 索引是一种特殊的数据结构,用于加快数据检索的速度。
- 常见的索引类型包括主键索引、唯一索引、聚集索引和非聚集索引等。
6. 数据库事务:- 事务是一组数据库操作,要么全部执行成功,要么全部回滚。
- ACID原则是保证事务的一致性和可靠性的基本要求,包括原子性、一致性、隔离性和持久性。
7. 数据库性能优化:- 合理设计数据库结构,减少冗余和依赖。
- 使用索引来加快数据检索的速度。
- 优化SQL语句,避免全表扫描和大量JOIN操作。
- 设置合适的缓存策略,减少对磁盘IO的访问。
- 定期备份和维护数据库,保证数据的安全和稳定性。
第一章:绪论1、数据库系统相关概念1、数据:描述事物的符号记录,包括数据的表现形式和数据解释两个部分。
如数字、音频、图形、文本、图像、语言、视频等多种表现形式。
经过数字化处理后存入计算机。
数据是信息的符号表示或载体。
信息是数据的内涵是对数据的语义解释。
2、数据库(DB):长期存储在计算机内、有组织、可共享的大量数据的集合。
数据库中的数据按照一定的数据模型组织、描述和存储,具有娇小的冗余度、交稿的数据独立性和易扩展性,并可为各种用户共享。
3、数据库管理系统(DBMS):位于用户和操作系统间的数据管理系统的一层数据管理软件。
用途:科学地组织和存储数据,高效地获取和维护数据。
包括数据定义功能,数据组织、存储和管理,数据库的事物管理和运行管理,数据库的建立和维护功能,其他功能。
4、数据库系统(DBS):在计算机系统中引入数据库后的系统,一般由数据库。
数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
目的:存储信息并支持用户检索和更新所需的信息。
2、数据模型概念,作用及其3要素模型:对现实世界中某个对象特征的模拟和抽象。
数据模型:是数据库中用来对现实世界数据特征的抽象的工具,是数据库中用于提供信息表示和操作手段的形式架构。
三要素:(1)数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。
(2)数据操作:对数据库中各种对象(型)的实例(值)所允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。
(3)数据的约束条件:是完整性规则的集合。
完整性规则是给订的数据库模型中数据及其联系所具有的制约和依存规则,用一限定符合数据模型的数据库状态及其变化,以保证数据库的正确、有效、相容。
3、概念模型的作用?概念模型实际上是显示世界到机器世界的一个中间层次。
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流所试用的语言。
数据库期末知识总结一、数据库的基本概念与原理1. 数据库的定义数据库是一个按照特定数据模型组织、存储和管理数据的仓库,可以对数据进行高效的存储和管理。
2. 数据库管理系统(DBMS)数据库管理系统是管理数据库的软件系统,它提供了数据的存储和查询等功能,并保证数据的完整性和安全性。
3. 数据模型数据模型是数据库中数据的表示方式,常见的数据模型有层次模型、网状模型和关系模型。
4. 关系模型关系模型是一种使用表(关系)来表示和管理数据的数据模型,由具有相同结构的元组(行)组成。
5. 数据库的三级模式数据库的三级模式包括外部模式、概念模式和内部模式。
外部模式是用户对数据的逻辑视图,概念模式是数据库的全局逻辑结构,内部模式是数据库的存储方式和物理结构。
6. 数据库的完整性数据库的完整性是指数据的正确性和一致性。
常见的完整性约束有实体完整性、参照完整性和用户定义的完整性。
7. ACID特性ACID是数据库事务的四个基本特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
二、数据库的设计与规范1. 数据库设计的步骤数据库设计的步骤包括需求分析、概念设计、逻辑设计和物理设计。
需求分析是明确用户需求,概念设计是将需求转化为概念模型,逻辑设计是将概念模型转化为逻辑模型,物理设计是将逻辑模型转化为物理模型。
2. 结构化查询语言(SQL)SQL是用于与数据库进行交互的标准语言,包括数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)和数据控制语言(DCL)等。
3. 关系数据库的规范化关系数据库的规范化是消除冗余和依赖的过程,包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)等。
4. 数据库的索引数据库的索引是提高查询性能的关键,常见的索引有B树索引、哈希索引和全文索引等。
5. 数据库的视图数据库的视图是基于表或查询结果构建的虚拟表,可以简化数据的访问和操作。
数据库管理的基础知识和技巧第一章:数据库管理概述数据库管理是指管理和维护数据库系统的各种操作和任务的过程。
它包括数据库设计、数据库安装、数据备份与恢复、性能优化等方面的工作。
数据库管理旨在确保数据库系统的高效运行和数据的完整性、一致性和安全性。
第二章:数据库设计数据库设计是数据库管理的第一步,它涉及到对数据的组织、存储结构、数据关系的建立和优化等问题。
在数据库设计中,需要分析需求,选择适当的数据模型(如关系型模型、面向对象模型等),设计数据表结构、建立关系和定义约束等。
第三章:数据库安装数据库管理的另一个重要方面是数据库的安装。
在数据库安装中,需要选择适用的数据库系统(如MySQL、Oracle等),按照相应的安装指南进行安装和配置。
安装过程中需要设置数据库的参数、权限,确保数据库可以正常运行。
第四章:数据备份与恢复数据备份与恢复是数据库管理中必不可少的环节。
通过合理的数据备份策略,可以保证在数据库发生故障、数据丢失或被破坏时能够快速进行数据恢复。
常用的数据备份方法包括完全备份、增量备份和差异备份等,通过定期备份数据库,可以最大程度地减少数据损失。
第五章:性能优化性能优化是数据库管理的重要任务之一。
通过合理的性能优化策略,可以提高数据库系统的响应速度和并发处理能力。
性能优化的方法包括索引优化、查询优化、服务器参数调整、数据分区等。
通过对数据库的监控和调优,可以减少系统崩溃和性能瓶颈等问题的发生。
第六章:安全管理安全管理是数据库管理不可忽视的方面。
数据库系统存储着重要的数据,对数据的安全性进行保护至关重要。
在安全管理中,可以采取加密、访问控制、审计等手段来确保数据库的安全。
此外,定期更新数据库系统补丁和加强数据库系统的防火墙等措施也是安全管理的一部分。
第七章:故障排除与监控数据库管理还包括故障排除与监控。
通过监控数据库的运行状态,可以及时发现和解决潜在的故障。
故障排除和监控可以通过日志查看、性能监控工具、系统报警等方法进行。
全国计算机二级数据库技术知识点一、数据库基础知识1、数据模型概念模型逻辑模型(层次模型、网状模型、关系模型、面向对象模型等)物理模型2、数据库系统的组成硬件平台软件平台人员(数据库管理员、系统分析员、数据库设计人员、应用程序员、最终用户)3、数据库管理系统的功能数据定义功能数据操纵功能数据库的运行管理数据库的建立和维护功能二、关系数据库1、关系模型的基本概念关系元组属性域关键字外部关键字2、关系代数传统的集合运算(并、交、差、广义笛卡尔积)专门的关系运算(选择、投影、连接、除)3、关系数据库的规范化第一范式(1NF)第二范式(2NF)第三范式(3NF)BC 范式(BCNF)三、数据库设计与管理1、数据库设计的步骤需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行和维护2、数据库设计的方法面向数据的方法面向过程的方法面向对象的方法3、数据库的管理数据完整性数据安全性并发控制数据库备份与恢复四、SQL 语言基础1、 SQL 语言的特点一体化高度非过程化语言简洁、易学易用2、数据定义语句CREATE TABLEALTER TABLEDROP TABLE3、数据查询语句SELECTFROMWHEREGROUP BYHAVINGORDER BY4、数据操纵语句INSERTUPDATEDELETE五、高级 SQL 语句1、索引索引的概念索引的类型(聚集索引、非聚集索引)创建索引删除索引2、视图视图的概念创建视图修改视图删除视图3、存储过程存储过程的概念创建存储过程执行存储过程删除存储过程4、触发器触发器的概念创建触发器删除触发器六、数据库应用开发1、数据库应用系统的体系结构C/S 结构B/S 结构2、数据库应用开发工具前端开发工具(VB、VC++、Delphi 等)后端数据库管理系统(SQL Server、Oracle、MySQL 等)3、数据库应用开发流程系统规划系统分析系统设计系统实施系统运行与维护七、数据库技术的发展1、分布式数据库分布式数据库的概念分布式数据库的特点分布式数据库的体系结构2、数据仓库与数据挖掘数据仓库的概念数据挖掘的概念数据挖掘的常用技术(关联规则挖掘、分类与预测、聚类分析等)3、大数据技术大数据的概念大数据的特点大数据处理的关键技术(Hadoop 生态系统、Spark 等)以上是全国计算机二级数据库技术的主要知识点,希望对您有所帮助。
数据库系统工程师知识点总结一、数据库基础概念。
1. 数据与数据库。
- 数据(Data):是描述事物的符号记录。
例如学生的姓名、年龄、成绩等都是数据。
- 数据库(Database,DB):是长期储存在计算机内、有组织的、可共享的数据集合。
它具有数据结构化、数据共享性高、冗余度低且易扩充、数据独立性高等特点。
2. 数据库管理系统(DBMS)- 功能:数据定义(定义数据库中的数据对象,如创建表、视图等)、数据操纵(对数据库中的数据进行查询、插入、删除、修改等操作)、数据库的运行管理(保证数据库的正常运行,如并发控制、安全性检查等)、数据库的建立和维护(数据库的初始建立、数据的转储和恢复等)。
- 常见的DBMS:Oracle(大型商业数据库,功能强大,适用于企业级应用)、MySQL(开源数据库,广泛应用于Web开发等多种场景)、SQL Server(微软的数据库产品,与Windows环境集成度高)等。
3. 数据库系统(DBS)- 由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(DBA)和用户构成。
二、数据模型。
1. 概念模型。
- 用于信息世界的建模,是现实世界到机器世界的一个中间层次。
- 常用的概念模型是E - R模型(Entity - Relationship Model)。
- E - R模型的基本元素:实体(Entity,如学生、课程等客观存在并可相互区分的事物)、属性(Attribute,实体所具有的某一特性,如学生的姓名是学生实体的一个属性)、联系(Relationship,实体之间的联系,如学生与课程之间存在选课联系)。
2. 逻辑模型。
- 层次模型:用树形结构表示实体及其之间的联系,有且只有一个根节点,根节点以外的节点有且只有一个父节点。
例如,一个公司的部门组织架构可以用层次模型表示。
- 网状模型:用网状结构表示实体及其之间的联系,允许一个以上的节点无双亲,一个节点可以有多于一个的双亲。
数据库技术三级考试知识点总结一、数据库基础。
1. 数据库系统概述。
- 数据库(DB)、数据库管理系统(DBMS)和数据库系统(DBS)的概念。
数据库是长期存储在计算机内、有组织、可共享的数据集合;DBMS是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据;数据库系统是由数据库、数据库管理系统、应用程序、数据库管理员(DBA)等组成的人机系统。
- 数据库系统的特点,如数据结构化(整体结构化,数据不再针对某一应用,而是面向全组织)、数据的共享性高、冗余度低且易扩充、数据独立性高(包括物理独立性和逻辑独立性)等。
2. 数据模型。
- 概念模型:用于信息世界的建模,是现实世界到机器世界的一个中间层次。
常用的概念模型是实体 - 联系模型(E - R模型),其中包括实体(客观存在并可相互区别的事物)、属性(实体所具有的某一特性)和联系(实体之间的联系有一对一、一对多和多对多等类型)。
- 数据模型的组成要素:数据结构(描述数据库的组成对象以及对象之间的联系)、数据操作(对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则)和数据的完整性约束条件(一组完整性规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容)。
- 常见的逻辑数据模型:- 层次模型:用树形结构表示实体及其之间的联系,有且只有一个根结点,根结点以外的其他结点有且只有一个父结点。
- 网状模型:用网状结构表示实体及其之间的联系,允许一个以上的结点无双亲,一个结点可以有多于一个的双亲。
- 关系模型:以二维表的形式组织数据,关系模型中的数据结构是关系(二维表),关系操作包括查询(选择、投影、连接等)和更新(插入、删除、修改)操作,关系的完整性约束包括实体完整性(主关键字不能取空值)、参照完整性(外键要么取空值,要么取对应主键的值)和用户定义的完整性。
3. 数据库系统结构。
第一章数据(Data)是数据库中存储的基本对象;定义:描述事物的符号记录;种类:文字、图形、图象、声音;特点:数据与其语义是不可分的数据库的定义:数据库(DB)是长期储存在计算机内、有组织的、可共享的大量数据集合数据库的特征:数据按一定的数据模型组织、描述和储存,可为各种用户共享,冗余度较小,数据独立性较高,易扩展数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件。
DBMS的用途:科学地组织和存储数据、高效地获取和维护数据DBMS的功能:数据库定义功能;数据组织、存储、管理;数据操纵功能;数据库的事务管理和运行管理;数据库的建立和维护功能数据库系统(DBS)是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员构成数据管理:对数据进行分类、组织、编码、存储、检索和维护,是数据处理的中心问题数据处理:对各种数据进行收集、存储、加工和传播的一系列活动的总和数据库管理技术经历了人工管理、文件系统、数据库三个阶段数据库系统的特点:数据结构化,数据共享性高、冗余度低、易扩充,数据独立性高,数据由DBMS统一管理(安全性保护、完整性保护、并发控制、数据库恢复)数据模型应满足三方面要求:能比较真实地模拟现实世界,容易为人所理解,便于在计算机上实现数据模型分成两个不同的层次:(1) 概念模型:也称信息模型,它是按用户的观点来对数据和信息建模。
(2) 数据模型(逻辑模型和物理模型):主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模。
数据模型的组成要素:(1)、数据结构:描述数据库的组成对象以及对象之间的联系(系统静态特性);(2)、数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则,主要有查询和更新(包括插入、删除和修改)(系统动态特性);(3)、数据的完整性约束条件概念模型:概念模型用于信息世界的建模,是现实世界到机器世界的一个中间层次概念模型要求:较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识、简单、清晰、易于用户理解。
这篇论坛文章根据笔者多年的数据仓库实施经验,同时结合ETL的过程原理和数据仓库建设方法归纳总结了以下优化的方案,详细内容请读者参考下文:1.引言数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取、转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数据的直接操作,SQL语句的效率将直接影响到数据仓库后台的性能。
目前,国内的大中型企业基本都具有四年以上计算机信息系统应用经验,积累了大量可分析的业务数据,这些信息系统中的数据需要通过搭建数据仓库平台才能得到科学的分析,这也是近几年数据仓库系统建设成为IT领域热门话题的原因。
2.优化的思路分析数据仓库ETL过程的主要特点是:面对海量的数据进行抽取;分时段对大批量数据进行删除、更新和插入操作;面对异常的数据进行规则化的清洗;大量的分析模型重算工作;有特定的过程处理时间规律性,一般整个ETL过程需要在每天的零点开始到6点之前完成。
所以,针对ETL过程的优化主要是结合数据仓库自身的特点,抓住需要优化的主要方面,针对不同的情况从如何采用高效的SQL入手来进行。
3.优化的实例分析目前数据仓库建设中的后台数据库大部分采用Oracle,以下的SQL采用Oracle的语法来说明,所有的测试在Oracle9i环境中通过,但其优化的方法和原理同样适合除Oracle 之外的其他数据库。
3.1索引的正确使用在海量数据表中,基本每个表都有一个或多个的索引来保证高效的查询,在ETL过程中的索引需要遵循以下使用原则:(1) 当插入的数据为数据表中的记录数量10%以上时, 首先需要删除该表的索引来提高数据的插入效率,当数据全部插入后再建立索引。
(2) 避免在索引列上使用函数或计算,在where子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。
举例:低效:select * ROM DEPT where SAL * 12 > 25000;高效:select * FROM DEPT where SAL > 25000/12;(3) 避免在索引列上使用NOT和”!=” ,索引只能告诉什么存在于表中,而不能告诉什么不存在于表中,当数据库遇到NOT和”!=”时,就会停止使用索引转而执行全表扫描。
(4) 索引列上用>=替代>高效:select * FROM EMP where DEPTNO >=4低效:select * FROM EMP where DEPTNO >3两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。
(5) 函数的列启用索引方法,如果一定要对使用函数的列启用索引,Oracle9i以上版本新的功能:基于函数的索引(Function-Based Index)是一个较好的方案,但该类型索引的缺点是只能针对某个函数来建立和使用该函数。
create INDEX EMP_I ON EMP (UPPER( ENAME));select * FROM EMP where UPPER(ENAME) = …BLACKSNAIL‟;3.2 游标的正确使用当在海量数据表中进行数据的删除、更新和插入操作时,用游标处理的效率是最慢的方式,但它在ETL过程中的使用又必不可少,而且使用有着及其重要的地位,所以游标的正确使用尤为重要。
对数据仓库维表的数据进行维护时,因为需要保证维表ID的一致性,所以采用游标的是数据维护完整性的最好方式。
由于它的效率低,如果按照普通的方式将无法处理大数据量的维表数据维护(一般是指10万条记录以上的维表),以下是处理这种情况的有效方式:(1) 在数据抽取的源表中使用时间戳,这样每天的维表数据维护只针对更新日期为最新时间的数据来进行,大大减少需要维护的数据记录数。
(2) 在insert和update维表时都加上一个条件来过滤维表中已经存在的记录,实例为:insert INTO DIM_CUSTOMER select * FROM ODS_CUSTOMER where ODS_CUSTOMER.CODE NOT exists (DIM_CUSTOMER.CODE)(3) 使用显式的游标(CURSORs) ,因为使用隐式的游标将会执行两次操作,第一次检索记录,第二次检查TOO MANY ROWS 这个EXCEPTION,而显式游标不执行第二次操作。
3.3数据抽取和上载时的SQL优化3.3.1 where子句中的连接顺序ORACLE采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其它where条件之前,那些可以过滤掉最大数量记录的条件必须写在where子句的末尾。
低效:select * FROM EMP E where SAL > 50000 AND JOB = …MANAGER‟ AND 25 < (select count(*) FROM EMP where MGR=E.EMPNO);高效:select * FROM EMP E where 25 < (select count(*) FROM EMP where MGR=E.EMPNO) AND SAL > 50000 AND JOB = …MANAGER‟;3.3.2 删除全表时用truncate替代delete当delete删除表中的记录时,有回滚段(rollback segments ) 用来存放可以被恢复的信息,而当运用truncate时,回滚段不再存放任何可被恢复的信息,所以执行时间也会很短。
同时需要注意truncate只在删除全表时适用,因为truncate是DDL而不是DML。
3.3.3 尽量多使用COMMITETL中同一个过程的数据操作步骤很多,数据仓库采用的是数据抽取后分析模型重算的原理,所以对数据的COMMIT不像业务系统为保证数据的完整和一致性而需要某个操作过程全部完成才能进行,只要有可能就在程序中对每个delete、insert和update操作尽量多使用COMMIT, 这样系统性能会因为COMMIT所释放的资源而大大提高。
3.3.4 用exists替代IN在许多基于基础表的查询中,为了满足一个条件往往需要对另一个表进行联接,例如在ETL过程写数据到模型时经常需要关联10个左右的维表,在这种情况下,使用exists 而不用IN将提高查询的效率。
3.3.5 用NOT exists替代NOT IN子查询中,NOT IN子句将执行一个内部的排序和合并,无论在哪种情况下,NOT IN 都是最低效的,因为它对子查询中的表执行了一个全表遍历。
用NOT exists替代NOT IN 将提高查询的效率。
3.3.6 优化GROUP BY提高GROUP BY 语句的效率,可以通过将不需要的记录在GROUP BY 之前过滤掉。
低效:select JOB , A VG(SAL) FROM EMP GROUP BY JOB HA VING JOB = …PRESIDENT‟ OR JOB = …MANAGER‟高效:select JOB , A VG(SAL) FROM EMP where JOB = …PRESIDENT‟ OR JOB = …MANAGER‟ GROUP BY JOB3.3.7 有条件的使用union-ALL 替换unionETL过程针对多表连接操作的情况很多,有条件的使用union-ALL 替换union的前提是:所连接的各个表中无主关键字相同的记录,因为union ALL 将重复输出两个结果集合中相同记录。
当SQL语句需要union两个查询结果集合时,这两个结果集合会以union-ALL的方式被合并,然后在输出最终结果前进行排序。
如果用union ALL替代union,这样排序就不是必要了,效率就会因此得到提高3-5倍3.3.8 分离表和索引总是将你的表和索引建立在不同的表空间内,决不要将不属于ORACLE内部系统的对象存放到SYSTEM表空间里。
同时确保数据表空间和索引表空间置与不同的硬盘控制卡控制的硬盘上事实表和维度表的设计数据仓库的物理模型较常见的操作型数据库的物理模型有很大不同。
最明显的区别是:操作型数据库主要是用来支撑即时操作,对数据库的性能和质量要求都比较高,为了防止“garbage in,garbage out”,通常设计操作型数据库的都要遵循几个范式的约束,除非少数情况下为了性能进行妥协,才可能出现冗余。
而数据仓库的建立并不上为了支撑即时操作,或者说,数据仓库的数据是来源于即时操作产生的数据,而不是直接来源于即时操作。
所以它的数据质量是由操作性系统来保证的,而不是由几个范式来保证的。
而且为了更好的跟踪历史信息,以及更快的产生报表,数据仓库的物理模型中存在着大量冗余字段。
数据仓库的物理模型分为星型和雪花型两种。
所谓星型,就是将模型中只有一个主题,其他的表中存储的都是主题的一些特征。
比如货物销量的主题仓库中,每次出售记录是事实表,而时间,售货员,商品是维度,都和事实表有联系,组织起来就是星型。
而如果更细化来看,商品是有种类,产地,价格等特征的,从这个角度来看,有两个主题,一个是商品出售,一个是商品本身。
组织起来就是雪花型。
实际项目中,由于操作型系统业务的复杂性导致本身产生了大量的数据,所以,组织起来也以雪花型居多。
那么围绕着主题,该如何设计事实表和维度表呢?也是有规律可循的。
事实表和维度表的分界线事实表是用来存储主题的主干内容的。
以日常的工作量为例,工作量可能具有如下属性:工作日期,人员,上班时长,加班时长,工作性质,是否外勤,工作内容,审核人。
那么什么才是主干内容?很容易看出上班时长,加班时长是主干,也就是工作量主题的基本内容,那么工作日期,人员,工作性质,是否外勤,工作内容是否为主干信息呢?认真分析特征会发现,日期,人员,性质,是否外勤都是可以被分类的,例如日期有年-月-日的层次,人员也有上下级关系,外勤和正常上班也是两类上班考勤记录,而上班时长和加班时长则不具有此类意义。
所以一般把能够分类的属性单独列出来,成为维度表,在事实表中维护事实与维度的引用关系。
在上述例子中,事实表可以设计成如下WorkDate EmployeeID,WorkTypeID,Islegwork,Content,而时间,员工,工作类型,是否外勤则归为维度表。
总的来看,和其他建立主外键关系的表也都一样。
但是维度表的建立是需要有层次的(虽然不是必须,但是也是典型特征),而事实表的建立是针对已经发生的事实的,是历史数据的存档,也就是说是不应该修改的。