暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
oracle数据库查询原理及优化.doc
39
5页
1次
2025-04-27
免费下载
Oracle
语句提高查询效率的方法
1
.. where column in(select * from ... where ...);
2
... where exists (select 'X' from ...where ...);
第二种格式要远比第一种格式的效率高。在
Oracle
中可以几乎将所有的
IN
操作符子查询改
写为使用
EXISTS
的子查询
使用
EXISTS
Oracle
系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,
这就节省了时间
Oracle
系统在执行
IN
子查询时,首先执行子查询,并将获得的结果列表存放在在一个加
索引的临时表中
避免使用
having
字句
避免使用
HAVING
子句
, HAVING
只会在检索出所有记录之后才对结果集进行过滤
.
这个处
理需要排
,
总计等操
.
如果能通
WHERE
子句限制记录的数
,
那就能减少这方面的开
销。
SQL Select
语句完整的执行顺序:
1
from
子句组装来自不同数据源的数据;
2
where
子句基于指定的条件对记录行进行筛选;
3
group by
子句将数据划分为多个分组;
4
、使用聚集函数进行计算;
5
、使用
having
子句筛选分组;
6
、计算所有的表达式;
7
、使用
order by
对结果集进行排序。
例:
update tablename set columnName=colunName+1,columnNameBa group by
select
语句可以使
group by
子句行划成较的组然后使用组函返回
一个组的汇总信息,另外,可以使用
having
子句限制返回的结果集
group by
子句可以
查询结果分组,并返回行的汇总信
Oracle
按照
group by
子句中指定的表达式的值分组查
询结。在
group by
子句查询句中
select
列表指定列要
group by
句中指定的列,要么包含聚组函
select max(sal),job emp group by job;(
注意
max(sal),job
job
并非定要现,有意
)
查询句的
select
group by ,having
子句聚组数唯
where
使
select deptno,sum(sal) from emp where
sal>1200 group by deptno having sum(sal)>8500 order by deptno;
当在
gropu by
子句中使用
having
子句时,查询结果中只返回满足
having
条件的组。在一个
sql
语句中可以有
where
子句和
having
子句。
having
where
子句类似,均用于设置限定
where
子句的作用是在对查询结果进行分组前,将不符合
where
条件的行去掉,即在分组之
前过滤数据,条件中不能包含聚组函数,使用
where
条件显示特定的行。
having
子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函
数,使用
having
条件显示特定的组,也可以使用多个分组标准进行分组。
查询每个部门的每种职位的雇员数
select deptno,job,count(*) from emp group by deptno,job;
Oracle SQL
性能优化技巧
1.
选用适合的
ORACLE
优化器
ORACLE
的优化器共有
3
A
RULE (
基于规则
) b
COST (
基于成本
) c
CHOOSE (
选择性
)
置缺器,
init.ora
文件
OPTIMIZER_MODE
参数明,
RULE
COST
CHOOSE
ALL_ROWS
FIRST_ROWS
。你当然也在
SQL
句级或是会
(session)
级对其进行覆盖。
为了使用基于成本的优化器
(CBO
Cost-Based Optimizer)
你必须经常运
analyze
令,以增加数据库中的对象统计信息
(object statistics)
的准确性。
如果数据库的优化器模式设置为选择
(CHOOSE)
,那么实际的优化器模式将和是否运
行过
analyze
命令有关。如
table
已经被
analyze
过,
优化器模式将自动成为
CBO
反之,
数据库将采用
RULE
形式的优化器。
在缺省情况下,
ORACLE
采用
CHOOSE
优化器,为了避免那些不必要的全表扫描
(full table
scan)
,你须尽避免使
CHOOSE
优化,而采用于规成本优化
器。
2.
访问
Table
的方式
ORACLE
采用访问表中记录的方式:
A
全表扫描
全表扫描就是顺序地访问表中每条记录。
ORACLE
采用一次读入多个数据
(database
block)
的方式优化全表扫描。
B
通过
ROWID
访问
你可以采用基
ROWID
访问方式情况,提访问表的效率,
ROWID
包含了表中
ORACLE
(INDEX)
(ROWID)
之间通常引提快速访
ROWID
的方些基索引
查询就可以得到性能的提高。
3.
SQL
语句
为了复解析相
SQL
语句,在第一次解之后
ORACLE
SQL
语句存放
存中。于系统局区
SGA(system global area)
的共
(shared buffer pool)
中的
可以被所有的数据库用当你执行一个
SQL
语句
(
有时为一
)
时,
如果它和之前的执行过的语句完全同,
ORACLE
就能很快获得已经被解析的语句以及最
的执行路径
ORACLE
的这个大大地提高了
SQL
的执行性能并节省了存的使用。
of 5
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜