没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Oracle SQL 语句优化
Oracle SQL 优化
目录
目录...........................................................................................................................................2
第 1 章 模块功能概要描述......................................................................................................4
第 2 章 SQL 语句编写注意问题.............................................................................................5
IS NULL 与 IS NOT NULL.......................................................................................5
联接列 ........................................................................................................................5
带通配符(%)的 like 语句.....................................................................................6
Order by 语句 .........................................................................................................6
NOT.....................................................................................6
IN 和 EXISTS .........................................................................7
第 3 章 SQL 语句性能优化 .....................................................................................................9
选用合适的 ORACLE 优化器 ..................................................................................9
访问 Table 的方式 .....................................................................................................9
共享 SQL 语句.........................................................................................................10
选择最有效率的表名顺序(只在基于规则的优化器中有效)................................11
WHERE 子句中的连接顺序 ...................................................................................12
SELECT 子句中避免使用 ‘ *’................................................................................13
减少访问数据库的次数 ..........................................................................................13
使用 DECODE 函数来减少处理时间....................................................................14
整合简单,无关联的数据库访问 .............................................................................15
删除重复记录 ........................................................................................................16
用 TRUNCATE 替代 DELETE.............................................................................16
尽量多使用 COMMIT...........................................................................................16
计算记录条数 ........................................................................................................17
用 Where 子句替换 HAVING 子句......................................................................17
减少对表的查询 ....................................................................................................17
通过内部函数提高 SQL 效率...............................................................................18
使用表的别名(Alias) .............................................................................................20
用 EXISTS 替代 IN................................................................................................20
用 NOT EXISTS 替代 NOT IN. ............................................................................21
用表连接替换 EXISTS..........................................................................................21
用 EXISTS 替换 DISTINCT..................................................................................22
识别’低效执行’的 SQL 语句...........................................................................22
使用 TKPROF 工具来查询 SQL 性能状态 .........................................................23
用 EXPLAIN PLAN 分析 SQL 语句....................................................................23
用索引提高效率 ....................................................................................................25
索引的操作 ............................................................................................................25
基础表的选择 ........................................................................................................27
Oracle SQL 优化
多个平等的索引 ....................................................................................................27
等式比较和范围比较.............................................................................................28
不明确的索引等级.................................................................................................29
强制索引失效.........................................................................................................30
避免在索引列上使用计算.....................................................................................30
自动选择索引.........................................................................................................31
避免在索引列上使用 NOT ...................................................................................31
用>=替代>..............................................................................................................33
用 UNION 替换 OR (适用于索引列) ...................................................................33
用 IN 来替换 OR....................................................................................................36
避免在索引列上使用 IS NULL 和 IS NOT NULL..............................................37
总是使用索引的第一个列.....................................................................................37
ORACLE 内部操作................................................................................................38
用 UNION-ALL 替换 UNION ( 如果有可能的话)..............................................39
使用提示(Hints) .....................................................................................................40
用 WHERE 替代 ORDER BY ...............................................................................41
避免改变索引列的类型.........................................................................................42
需要当心的 WHERE 子句 ....................................................................................43
连接多个扫描.........................................................................................................44
CBO 下使用更具选择性的索引 ...........................................................................45
避免使用耗费资源的操作.....................................................................................46
优化 GROUP BY ...................................................................................................46
使用日期.................................................................................................................47
使用显式的游标(CURSORs).................................................................................47
优化 EXPORT 和 IMPORT...................................................................................47
分离表和索引.........................................................................................................48
Oracle SQL 优化
第1章 模块功能概要描述
在应用系统开发初期,由于开发数据库数据比较少,对于查询
SQL
语句,复杂视图的的
编写等体会不出
SQL
语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着
数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优
化中一个很重要的方面就是
SQL
语句的优化。对于海量数据,劣质
SQL
语句和优质
SQL
语句
之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写
出高质量的
SQL
语句,提高系统的可用性。
Oracle SQL 优化
第2章 SQL 语句编写注意问题
下面就某些 SQL 语句的 where 子句编写中需要注意的问题作详细介绍。在这些 where 子句
中,即使某些列存在索引,但是由于编写了劣质的 SQL,系统在运行该 SQL 语句时也不能使用
该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。
IS NULL 与 IS NOT NULL
任何 SQL 语句,只要在 where 子句中使用了 is null 或 is not null,那么 Oracle 优化器就不允
许使用索引了。
联接列
对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来
看 一 个 例 子 ,
假 定 有 一 个 职 工 表 (
employee
)
,
对 于一 个 职 工 的 姓 和 名 分 成 两 列 存 放
(FIRST_NAME 和 LAST_NAME),现在要查询一个叫比尔.克林顿(Bill Cliton)的职工。
下面是一个采用联接查询的 SQL 语句,
select * from employss
where
first_name||''||last_name ='Beill Cliton';
上面这条语句完全可以查询出是否有 Bill Cliton 这个员工,但是这里需要注意,系统优化器
对基于 last_name 创建的索引没有使用。 当采用下面这种 SQL 语句的编写,Oracle 系统就可以采
用基于 last_name 创建的索引。
Select * from employee
where
first_name ='Beill' and last_name ='Cliton';
遇到下面这种情况又如何处理呢?如果一个变量(name)中存放着 Bill Cliton 这个员工的姓
名,对于这种情况我们又如何避免全程遍历,使用索引呢?可以使用一个函数,将变量 name
中
剩余47页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1900
- 资源: 3864
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功