基于Oracle数据库海量数据的查询优化研究

第2 2卷 第 2期 21 0 2年 2月
计 算 机 技 术 与 发 展
COMP I U ER CHNOL TE OGY AND DEVEL MENT OP
Vo . 2 N . 12 o 2 Fb e . 2 1 02
基 于 Orc a l 据 库 海 量 数 据 的查 询 优 化 研 究 e数
1 概

行研究 的。数据库 以 O al r e为例 , c 主要采取 以下措 施 来提高查询速度 : 用索 引、 区 、Q 使 分 S L语句 优化 等手
在数据库数据量 比较 大时 , 查询 的响应时间过长 、
占用资源过多是一个很 大的问题。因此对海量数据查 询技术 的研究 u ・ 0就很有必要 。 如果想要 设计 一 个性 能 良好 的 O al 据库 方 r e数 c
张 辉 , 郁亮, 赵 徐 江 , 伟 华 孙
( 公安部第三研究所 防伪事业部 , 上海 2 10 ) 02 4
摘 要 : 统数 据库 数据量 大 时 , 常会 遇到 系统 响应 时间 过长 、 系 常 占用 系统 资源 过多 等一 系 列 问题 。 因此对 海量 数 据查 询
技 术 的研究 就很 必 要 。文 中基 于 O al数 据库 , r e c 采用 各种措 施 和 方 法 来 提高 响应 速 度 : 理设 计 数 据库 结 构 、 用索 引 、 合 使 分 区 、Q S L语句 优 化等 手段优 化数 据库 。另 外 , 页显 示查 询结 果也 能 很大 地 提高 查 询速 度 。实验 证 明 , 分 优化 后速 度 明显 提高 了很 多 。因此 可见 , 中采 用 的优 化方法 对海 量数 据 的查 询优化 是 正确有 效 的。 文 关键 词 : r l数 据库 ; Oae c 海量 数据 ; 查询 优 化
t e v ro s me s r s a d me o s t mp o e t e r s o s p e a e o a l aa a e s c s r a o a l e i n n e d tb s h a i u a u e t d O i r v h e p n s e d b sd n Or ce d t b s u h a s n b y d sg i g t a a e n h e e h a
●选择联合查询 的次序
●在子查询 中慎 重使用 I 者 N TI N或 O N语句 , 使
用 w e ( O )x t的效果要好 的多 hr N T eis e s
Y Y — M- D ) , Y M D )
p ri o a tin p t
_
2 10 au sls h n (o d t(2 1 0 0 1v le esta t— ae "0 0—1 , —1
率更高的形 式。S L语句优化 的原则如下 : Q ●尽量使用索 引
Y Y — M- D ) , Y Y M D )
p ri o a tin p t
_
2 0 1 ausl sta t— ae "0 9 2 0 9 2vle e h n(o d t(2 0 -1 —1 , s
() 2 为了返 回一条单一记 录而扫描多个文件 ; () 3 由于存 在错 误 的索 引 , 导致 多表 的连 接操 作
持续几个小时 。
基金项 目: 国家 十一 五科技支撑计划项 目( 08 A 3 B 1 20 B F 1 0 ) 作者简介 : 张 辉 (9 1 , , 18 一) 女 助理 研究 员 , 士, 硕 研究方 向为智能
计分为逻 辑设计 和物理设计两个 阶段 。在设计 时应遵 循 基于第三范式 的基 本表进 行设计 , 同时也要 基 于基 本 表进 行扩展设计 , 这里不再赘述 。
在经常进 行查询操作 而不经常进行增 加 、 除 、 删 修改操 作 的列上 。创建索引时还需要注意 :
( ) 立索 引要付 出维 护 的代价 , 1建 建立 以后 却从
因为在维护分区的时候可能对分 区的索引会产生一定 的影 响 , 可能需要在维护之后重建索引 。
O al 分 区主要有 : rc e 按字段值 范 围分 区 ; 按字段 的 HA H 函数值 H S S A H分 区 ; 按范 围划 分 , 先 再按 H S AH
4 S QL语句优化技术
s u t , eu eo eid x p r t n S pi zt n me o . n a dt n- a ia o i ly teq ey rs l a l r t o , QL o t a o t d I d i o p gn t n ds a u r eut C a o g e l i r r h e h n i i mi i h i i p h s n s ay
未使用 过 ;
对 系统硬件的升级也是提高查询速度 的一 种很 重
要 的方法 , 比如更 换或升级服务器 的版本 , 但文 中对查 询优化技术 的研 究主要是 针对数 据库 的逻 辑层 进
收 稿 日期 :0 1 0 — 8; 回 日期 :0 1 0 6 2 1—6 2 修 2 1 —1—1
Mi t ft . C。hn hi 0 24。hn ) msyo eP R. S ag a 2 10 C ia r h
Ab t a t W h l a a a e h s lr e a u to aa,h n ui swi a e a s re fp o l ms l e s se r s o s i st o l n n s r c : i d tb s a a g mo n fd t t e i q r l h v e i s o r b e i y t m e p n t e e l k e me i o o g a d
41 S . QL语 句 优 化
划分的复合分 区 ; O al i 在 re 9 中又增 强 了按 字段 值列 e
表进行划分的列表 ( ii ) 区方法 。 Lsn 分 tg 在本 次试验 中 , 对车辆 过 车记录表 中的过 车时 针 间字段进行分区 , 每个 月的数 据做一个分 区表 , 这样按 照过车时间进行 查询时 , 大大增加查询 的速度 。 会
在数据库应用 系 统 中编写 可执行 的 S L语 句 可 Q 以有多种方式实现 , 但用哪一条 比较适合却难 以确定 。 为 了解决这一问题 , 有必要对 S L实施优化 。简单地 Q
说 ,Q S L语句 的优 化 叫就是将 执行 效率 较低 的 S L Q
语句转换成 目的相同但执 行效率较 高的 S L语句 。 Q S L语句优化 主要 是进行 查询 等价转 换 , Q 主要是
o a l t ba e n Or ce Da a s
ZHANG i ZHAO Hu , Yu-la g, i n XU i n S J a g, UN e — ua W ih
( ni c u t fi n e h oo y C u eDe at n 。 h t R sac s tt o u l e ui A t o n r t gT c n lg a s p r — e ei me tT eT I 砷 ee rhI tue fP b cS c r y ni i t
案, 首先要 对 O al 据库 表 结构 进行 合 理 的设 计 , r e数 c
如果数据库本身 设计就 不是很合 理 , 么对 O al 数 那 rc e 据库 的查 询优化 就会 大打折扣 , 因此 , al r e数据库 的 O c 查询优化 应该从合理设 计数 据库结 构 开始 , 据库设 数
中图分 类号 :P 1 T31 文 献标识 码 : A 文 章编 号 :6 3 6 9 2 1 ) 2 0 6 - 3 17 — 2 X(0 2 0 - 15 0
Qu r t z t n Ree r ho aso t ae eyOpi ai sa c nM s fDaaB sd mi o
从查询语 义 的角度将 用户 的 S L查 询语 句转 换 为效 Q
本次分区表的 S L语句如卞 : P
p rt n b a g T ' A TME) ati yrne( RC RR I io ( ati _ 0 91 ausl sta t— ae 2 0 -1 —1, p rt np 2 0 1v le e hn(O d t( 0 9 1 io s
段对数据库 的逻辑结构进行优化 。
2 索引技 术
索 引 是建立在 表列上 的 , 当某 列创 建 了索 引之 后, 每次进行插入 、 改和删 除操作 之后 , 修 该表数 据就 会 根据索 引进行 重新排序 , 以方便 针对该 列针对 索 引
进行查询 。因此 , 在创 建索引的时候 , 要把索 引列建立
Y Y — Y Y MM- D ) , D ,)
p ri o a tin p t
_
2 10 au sls h n ( — ae "0 0 0 0 2 vle esta t dt ( 1 -2—1, O 2
●慎重使用视 图的联 合查 询 , 尤其 是 比较复杂 的 视 图之间的联合查询 ◆避免在 S L里使用 P / Q Q L S L功能调用 ●限制对远程表 的访问 ●在查询 中慎用 I N或 N TI O N子句 ●用 U I N替换 O 使 用于 在 w ee子句 中包 NO R( hr 含索引列 ) ●优化 G O P B 将 不需 要 的记 录 在 G O P R U Y( R U B Y之前过滤掉 )
的时候则只操作该分 区的记 录 , 高 了数 据处 理的速 提
于一个整体 , 看不 出有什么变化 , 这样就减少 了技术人 员 对具体 数据存储 位置 的了解 , 只要 从逻 辑上仍将 该 大 型表看成一个整体就行 。增加 了可用性。
3 1 分 区的 方 法 .
度 。不要 指定分区直接操作数据也是可 以的。在分 区 表上建索引及 多索引 的使用 和非分 区表一样 。此外 ,
合集下载

浅谈ORACLE中的SQL优化

浅谈ORACLE中的SQL优化
现 的 角度 讨论 了大型 数据 库 管理 系统 O C 中 S 语 句优化 的问题 。 RA I E QI
关键词 : A I;Qi 优 化 方 法 OR C S ;
中图 分类号 : 3 1 1 TP 9 .3
文 献标 识码 : A
文章 编号 :0 7 62 (0 6 1— 09 —0 10 - 9 12 0 )6 0 2 1
2 2 正确 的使 用 索 引 .
索 引 可 以加快 查 询的 速度 , 是提 高 S 句 执 QI语
行速 度 的较 好方 法 。但如 果 S 句编 写 不 当 。 QI 语 索
引将起 不 到任 何 作 用 , 反而 会 影 响 系统 的性 能。 引
起 索 引失 效有 以下几 种方 式 : 22 1 S I 句 中 根 本 没 有 W H R 条 件 子 句 , . . Q 语 E E
解 决 的最主 要 的 问题之 一 。系 统 优化 中一 个很 重 要
S I C * F OM MP不 能 共 享 的 原 因 : E T E R E 空
格数 不 一致
的方面就是 S QI语句的优化 。据统计 , 约有 9 0% 的性 能 问题 是 由于 程 序员 或用 户使 用 了不 恰当 的查 询 语 句造成 的 , 因此 S 语句 的质 量对 整 个系 统效 QI 率 有重 大关 系 。对 于海 量 数据来 说 , 质 S 语句 劣 QI 和 优质 S 句 之 间的速 度差 别 可 以达 到 上百 倍 , QI语 甚 至更 多 。如 何知 道一 个 S 句的 优 劣 。 QI语 首先 要 了解 一下 O AC E中 S 句 的执行 过 程 。 R L QI语 1 O C RA I E中 S 句的执 行 过 程 QI语 个S QI语句 在 OR C I A E 中执 行 大 概 分 为 以 下 6个过程 : ①计算语句值 ; ②共享池中有无与此语 句 字符 完 全 匹 配 的 语 句 ; 准 备 要 运 行 的 S ③ QI语 句 ; 为新 语 句在 共享 池 巾创建 空 间 ; 将 语句 存放 ④ ⑤ 在 共享 池 中 ; 执 行准 备好 的 S 句 。 ⑥ QI语 当第 一 次 执 行 某 个 S 句 时 , AC I先 QI语 OR E 将 其解 析 然 后 将 该 语 句 存 放 在 全 局 区 域 的 共 享 池 中, 可 以被所 有 的数 据 库 用 户 共 享 。 当 再 次执 行 并 个 S I语句 时 , Q 如果 它 和之 前执 行过 的语 句 完全 相 同 , A E 直接 从共 享 池 中获 得 被 解 析 的语 OR C I将 句 。这 样解 析过 程 被省 略 , 只执 行① 、 、 步 , 即 ② ⑥ 省

oracle sql 优化技巧

oracle sql 优化技巧

oracle sql 优化技巧(实用版3篇)目录(篇1)1.Oracle SQL 简介2.优化技巧2.1 减少访问数据库次数2.2 选择最有效率的表名顺序2.3 避免使用 SELECT2.4 利用 DECODE 函数2.5 设置 ARRAYSIZE 参数2.6 使用 TRUNCATE 替代 DELETE2.7 多使用 COMMIT 命令2.8 合理使用索引正文(篇1)Oracle SQL 是一款广泛应用于各类大、中、小微机环境的高效、可靠的关系数据库管理系统。

为了提高 Oracle SQL 的性能,本文将为您介绍一些优化技巧。

首先,减少访问数据库的次数是最基本的优化方法。

Oracle 在内部执行了许多工作,如解析 SQL 语句、估算索引的利用率、读数据块等,这些都会大量耗费 Oracle 数据库的运行。

因此,尽量减少访问数据库的次数,可以有效提高系统性能。

其次,选择最有效率的表名顺序也可以明显提升 Oracle 的性能。

Oracle 解析器是按照从右到左的顺序处理 FROM 子句中的表名,因此,合理安排表名顺序,可以减少解析时间,提高查询效率。

在执行 SELECT 子句时,应尽量避免使用,因为 Oracle 在解析的过程中,会将依次转换成列名,这是通过查询数据字典完成的,耗费时间较长。

DECODE 函数也是一个很好的优化工具,它可以避免重复扫描相同记录,或者重复连接相同的表,提高查询效率。

在 SQLPlus 和 SQLForms 以及 ProC 中,可以重新设置 ARRAYSIZE 参数。

该参数可以明显增加每次数据库访问时的检索数据量,从而提高系统性能。

建议将该参数设置为 200。

当需要删除数据时,尽量使用 TRUNCATE 语句替代 DELETE 语句。

执行 TRUNCATE 命令时,回滚段不会存放任何可被恢复的信息,所有数据不能被恢复。

因此,TRUNCATE 命令执行时间短,且资源消耗少。

在使用 Oracle 时,尽量多使用 COMMIT 命令。

基于Oracle的海量空间影像数据管理

基于Oracle的海量空间影像数据管理

基于Oracle的海量空间影像数据管理摘要:本文在介绍了Oracle的Spatial组件的基础上,探讨了基于Oracle数据库实现海量空间影像数据的管理技术。

通过采用数据分块结合索引检索的方式实现了快速管理管理海量空间影像数据。

关键词:空间影像数据分块技术索引Spatial组件元数据1 前言随着卫星遥感观测、地理信息系统、航空摄影等技术的快速发展,采集高分辨率的空间影像数据不是什么难事。

但是影像数据的分辨率越高意味着数据量越大,比如采集相同地段的遥感影像数据时,分辨率越高,需要存储、管理的影象数据量相应越大,它们之间是非线性增长的量化关系。

任何空间影像数据管理系统都将涉及到影像数据的存储、访问、显示、管理等等问题,尤其对于显示模块来说,由于影像数据量巨大,加之计算机系统有限的内存等诸多瓶颈,使得计算机面临着内存供需和影像数据量增长之间的矛盾。

因此为了能够实现海量影像数据高效管理,必须在考虑现有计算机软硬件配置的基础上,研发可行的影像数据处理解决方案。

一种常规的做法是在软件算法层面探索可行的处理方法,比如中间图像处理技术就是其中的一种。

这种中间图像实质是通过和原始图像和最终图像进行交换实现提升计算机图像显示速度的方式来实现的。

事实上,分块技术类似于中间图像技术,分片处理可以将海量的影像数据拆分成很多个数据量相对较小的数据块,通过对这些数据块编号并建立索引的方式,通过检索编号、索引的方式快速检索到各个数据块从而提高访问和管理海量空间影像数据的效率。

本文正是在这个基础上探讨了基于Oracle提供的Spatial组件技术实现管理海量空间影像数据的管理。

2 影像数据管理2.1 Spatial 组件Oracle公司推出了一种空间数据库组Spatial,是一种用来实现存储、管理空间数据的组件技术。

自Oracle9i后,Oracle开始对三维空间影像数据的处理提供了强有力的支持接口。

Spatial组件内部包含了元数据表、空间数据字段(简称:SDO_GEOMETRY)和空间索引,为实现空间影像数据和Oracle数据库表的映射奠定基础,Oracle Spatial组件还开放了一系列空间影像数据查询、分析的API接口,这些接口使得用户具备开发三维影像管理系统的能力,比如GIS地理信息系统。

oracleexplain数据库的用法

oracleexplain数据库的用法

oracleexplain数据库的用法一、简介Oracle Explain是Oracle数据库中用于分析查询性能的工具,它可以帮助开发人员和数据库管理员了解查询执行计划,优化查询性能,提高数据库的效率。

二、Explain的使用方法1. 查询性能分析:使用Explain可以分析查询性能,确定查询的执行计划是否合理,是否存在性能瓶颈。

通过Explain生成的报告可以提供查询执行过程中的热点数据和执行时间等信息。

2. 查询优化:通过Explain生成的报告,可以了解查询的执行计划,从而优化查询语句,提高查询性能。

例如,可以通过调整索引、优化数据表结构、减少数据访问等手段来优化查询性能。

3. 使用方式:在Oracle数据库中,可以使用Explain来分析查询性能。

在执行查询之前,可以使用EXPLAIN PLAN语句来生成查询的执行计划。

例如:```sqlEXPLAIN PLAN FOR SELECT * FROM table_name WHERE column_name ='value';```执行上述语句后,系统会生成一个执行计划,并将其存储在数据库中。

可以使用以下语句来查看执行计划:```sqlSELECT * FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE','PLAN_TABLE_OUTPUT'));```4. 注意事项:在使用Explain分析查询性能时,需要注意以下几点:* Explain只能分析已经执行的查询,无法分析未执行的查询。

* Explain生成的报告是基于当前数据库配置和数据表结构的,可能会随着数据库环境的改变而发生变化。

* Explain生成的报告只能提供一种参考,不能完全依赖它来优化查询性能。

需要结合实际情况进行优化。

三、Explain报告的内容Explain报告提供了关于查询执行计划的信息,包括但不限于以下内容:1. 查询计划:报告中会列出查询的执行计划,包括每个操作的顺序、操作类型、消耗的资源等信息。

oracle 历史逻辑读高sql查询

oracle 历史逻辑读高sql查询

oracle 历史逻辑读高sql查询
逻辑读是指在执行SQL查询时,Oracle数据库需要读取的数据块的数量。

逻辑读的数量越少,查询的性能越好。

在进行高效的SQL查询时,可以考虑以下几个方面来减少逻辑读的数量:
1. 创建合适的索引:索引可以加快查询的速度,减少逻辑读的数量。

根据查询的需求,创建适当的索引可以提高查询性能。

2. 编写高效的SQL语句:尽量避免使用不必要的连接操作、子查询和排序操作,这些操作会增加逻辑读的数量。

优化SQL语句的写法,可以减少逻辑读的数量。

3. 使用合适的查询条件:在查询时使用合适的查询条件可以减少需要读取的数据块数量。

尽量使用索引列进行查询,避免全表扫描。

4. 使用合适的批量操作:对于需要处理大量数据的操作,可以考虑使用批量操作,减少逻辑读的数量。

比如使用批量插入、批量更新等操作。

5. 定期收集统计信息:Oracle数据库中的统计信息可以帮助优化查询计划,减少逻辑读的数量。

定期收集统计信息可以保持查询的性能。

通过以上的优化措施,可以减少逻辑读的数量,提高SQL查询的性
能。

第09章Oracle的性能优化

第09章Oracle的性能优化

9.2 SQL语句的优化
9.2.1 SQL语句的优化规则 9.2.2 SQL语句优化的具体方法
9.2.1 SQL语句的优化规则
(1)去掉不必要的大表、全表扫描。不必要的大表、全表 扫描会造成不必要的输入输出,而且还会拖垮整个数据库;
(2)检查优化索引的使用 这对于提高查询速度来说非常重 要;
(3)检查子查询,考虑SQL子查询是否可以用简单连接的 方式进行重新书写;
系统的服务器,可以使用sar –u命令查看CPU的使用率;NT 操作系统的服务器,可以使用NT的性能管理器来查看CPU 的使用率。
出现CPU资源不足的情况是很多的:SQL语句的重解析、 低效率的SQL语句、锁冲突都会引起CPU资源不足。
2.查看SQL语句的解析情况 (1)数据库管理员可以执行下述语句来查看SQL语句的解析 情况:
9.3 Oracle运行环境的优化
9.3.1 内存结构的调整 9.3.2 物理I/O的调整 9.3.3 CPU的优化调整 9.3.4 网络配置的优化 9.3.5 Oracle碎片整理 9.3.6 Oracle系统参数的调整
9.3.1 内存结构的调整
内存参数的调整主要是指Oracle数据库的系统全局区 (SGA)的调整。SGA主要由三部分构成:共享池、数 据缓冲区、日志缓冲区。
2.数据缓冲区 数据库管理员可以通过下述语句,来查看数据库数据缓冲区
的使用情况。
SELECT name, FROM v$sysstat WHERE name IN ('db block gets','consistent gets','physical reads');
根据查询出来的结果可以计算出数据缓冲区的使用命中率:

oracle中高效的模糊匹配方法

oracle中高效的模糊匹配方法(实用版4篇)篇1 目录1.引言2.Oracle 中的模糊查询3.模糊查询的优化方法4.instr 函数的应用5.示例与对比6.结论篇1正文一、引言在当今信息爆炸的时代,从海量数据中检索到所需的信息变得尤为重要。

在数据库查询中,模糊查询是实现这一目标的有效手段。

Oracle 作为业界领先的数据库管理系统,提供了丰富的模糊查询功能。

本文将介绍Oracle 中高效的模糊匹配方法。

二、Oracle 中的模糊查询在 Oracle 中,模糊查询通常使用 LIKE 关键字实现。

它可以在WHERE 子句中使用,以便在查询结果中包含指定的关键字。

然而,模糊查询在实际应用中可能会导致查询性能下降,因此需要对其进行优化。

三、模糊查询的优化方法为了提高模糊查询的性能,Oracle 提供了几种优化方法:1.使用前缀匹配:在查询条件中,可以使用 LIKE 关键字加上前缀匹配,以减少需要搜索的数据量。

例如,如果需要查找以“关键字”开头的记录,可以使用“关键字%”作为查询条件。

2.使用通配符:在查询条件中,可以使用 LIKE 关键字加上通配符%,以便匹配任意数量的字符。

例如,如果需要查找包含“关键字”的记录,可以使用“%关键字%”作为查询条件。

3.使用 instr 函数:Oracle 提供了 instr 函数,用于在字符串中查找子字符串的位置。

通过使用 instr 函数,可以在查询条件中精确匹配子字符串,从而提高查询性能。

四、instr 函数的应用instr 函数的语法如下:```instr(string1, string2 [, startposition [, nthappearance]]) ```参数说明:- string1:源字符串,要在此字符串中查找。

- string2:要在 string1 中查找的字符串。

- startposition:代表 string1 的哪个位置开始查找。

个人经验总结:处理海量数据的经验和技巧

个人经验总结:处理海量数据的经验和技巧在实际的工作环境下,许多人会遇到海量数据这个复杂而艰巨的问题,它的主要难点有以下几个方面:一、数据量过大,数据中什么情况都可能存在。

如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿在实际的工作环境下,许多人会遇到海量数据这个复杂而艰巨的问题,它的主要难点有以下几个方面:一、数据量过大,数据中什么情况都可能存在。

如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么情况都可能存在,例如,数据中某处格式出了问题,尤其在程序处理时,前面还能正常处理,突然到了某个地方问题出现了,程序终止了。

二、软硬件要求高,系统资源占用率高。

对海量的数据进行处理,除了好的方法,最重要的就是合理使用工具,合理分配系统资源。

一般情况,如果处理的数据过TB级,小型机是要考虑的,普通的机子如果有好的方法可以考虑,不过也必须加大CPU和内存,就象面对着千军万马,光有勇气没有一兵一卒是很难取胜的。

三、要求很高的处理方法和技巧。

这也是本文的写作目的所在,好的处理方法是一位工程师长期工作经验的积累,也是个人的经验的总结。

没有通用的处理方法,但有通用的原理和规则。

下面我们来详细介绍一下处理海量数据的经验和技巧:一、选用优秀的数据库工具现在的数据库工具厂家比较多,对海量数据的处理对所使用的数据库工具要求比较高,一般使用Oracle或者DB2,微软公司最近发布的SQL Server 2005性能也不错。

另外在BI领域:数据库,数据仓库,多维数据库,数据挖掘等相关工具也要进行选择,象好的ETL工具和好的OLAP工具都十分必要,例如Informatic,Eassbase等。

笔者在实际数据分析项目中,对每天6000万条的日志数据进行处理,使用SQL Server 2000需要花费6小时,而使用SQL Server 2005则只需要花费3小时。

浅谈超大型Oracle数据库的基础设计和优化设计

a e ome o e o he p pu a a f r .I sm o e a d mor u t me s,b e s t a kg oun t ba e nd b c n ft o l rplt o ms tha r n ec s o r e us d a he b c r d da a s s se i y t m n man usne sa plc ton s t m s y b i s p ia i ys e .Buti he pr c ia p ia i n,f ome u e si f mii rwih n t a tc la plc to ors s r sun a la t Or c e,o a ta s l e y u e s a d i.Th r a ome is e ha mpa tt e u i g o a l al r c n’ b o ut l nd r t n t e e m y be s s u s t ti c h s n fOr c e,a d a s n lo
第 2 5卷
第5 期
电 脑 开 发 与 应 用
( 4 1 总 0)

・6 9・
文 章 编 号 :0 35 5 (O 2 O—0 90 1 0—8 O 2 1 )50 6— 3
浅 谈 超 大 型 Or ce数 据 库 的 基 础 设 计 和 优 化 设 计 al
吴 蓓
10 8 ) 0 0 9
比较强 ;
多地 被 用户 认 可 和使 用 。能很 好地 认 识 、 利用 O a l rce 数 据库 将为 工作 带来 很大 的便 利 。
1 0rce的基 础 介 绍 al
1 1 Orce的逻 辑结 构 . a l Orce的逻辑 结 构 包 含两 个 方 面 的 内容 : al 存储 单 元 以 及 数 据 库 对 象 。存 储 单 元 包 括 : lc 、 xe t Bo k E tn 、 S g n 、 bep e s 数 据 对 象 分 别 是 : 、 引、 e me tTa ls ae ; 表 索 序 列 、 图 、 发器 、 视 触 存储 过程 、 函数 、 。 包 其相互 关 系如 图

Oracle的分页查询语句优化

Oracle的分页查询语句优化Oracle的分页查询语句基本上可以按照本⽂给出的格式来进⾏套⽤。

(⼀)分页查询格式:SELECT * FROM(SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME) AWHERE ROWNUM <= 40)WHERE RN >= 21其中最内层的查询SELECT * FROM TABLE_NAME表⽰不进⾏翻页的原始查询语句。

ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

上⾯给出的这个分页查询语句,在⼤多数情况拥有较⾼的效率。

分页的⽬的就是控制输出结果集⼤⼩,将结果尽快的返回。

在上⾯的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。

选择第21到40条记录存在两种⽅法,⼀种是上⾯例⼦中展⽰的在查询的第⼆层通过ROWNUM <= 40来控制最⼤值,在查询的最外层控制最⼩值。

⽽另⼀种⽅式是去掉查询第⼆层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最⼩值和最⼤值。

这时,查询语句如下:SELECT * FROM(SELECT A.*, ROWNUM RNFROM (SELECT * FROM TABLE_NAME) A)WHERE RN BETWEEN 21 AND 40对⽐这两种写法,绝⼤多数的情况下,第⼀个查询的效率⽐第⼆个⾼得多。

这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提⾼内层查询的执⾏效率。

对于第⼀个查询语句,第⼆层的查询条件WHERE ROWNUM <= 40就可以被Oracle推⼊到内层查询中,这样Oracle查询的结果⼀旦超过了ROWNUM限制条件,就终⽌查询将结果返回了。

⽽第⼆个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,⽽Oracle⽆法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。

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