WEB开发网
开发学院数据库Oracle Oracle的SQL语句执行效率问题查找与解决方法 阅读

Oracle的SQL语句执行效率问题查找与解决方法

 2007-01-22 12:02:48 来源:WEB开发网   
核心提示: HASH JOIN在其中一表的连接列上作散列,因此只有另外一个表做排序合并,Oracle的SQL语句执行效率问题查找与解决方法(4),理论上比SORT JOIN会快些,需要有足够的内存,然后这个语句再生成一个递归调用,db block gets请求一个CURRENT块的次数consiste

HASH JOIN在其中一表的连接列上作散列,因此只有另外一个表做排序合并,理论上比SORT JOIN会快些,需要有足够的内存,而且打开了SORT_JOIN_ENABLE参数。(当缺少有用的索引时,哈希连接比嵌套循环连接更加有效。哈希连接可能比排序合并连接更快,因为在这种情况下只有一张源表需要排序。哈希连接也可能比嵌套循环连接更快,因为处理内存中的哈希表比检索B_树索引更加迅速。和排序合并连接、群集连接一样,哈希连接只能用于等价连接。和排序合并连接一样,哈希连接使用内存资源,并且当用于排序内存不足时,会增加临时表空间的I/O(这将使这种连接方法速度变得极慢)。最后,只有基于代价的优化器才可以使用哈希连接。)

索引连接:

No2: AUTOTRACE

•set autotrace 使用步骤:

1、以system登录

2、创建plustrace角色; <your_oracle_home>sqlplusadminplustrce.sql

3、向常规用户授予权限:grant plustrace to <user id>

4、如果没有plan_table也要创建: <your_oracle_home> dbmsadminutlxplan.sql

•set autotrace 选项

on 显示查询结果,执行计划,统计数据

on statistics  显示查询结果,统计数据,不显示执行计划

on explain显示查询结果,执行计划,不显示统计数据

traceonly 显示执行计划和统计结果,但不包括查询结果

traceonly statistics  仅显示统计数据

recursive calls在用户级别和系统级别上生成的递归调用的数量。Oracle维护了一些用于内部处理的表。当oracle需要对这些表进行更改时,它就会在内部生成一个SQL语句,然后这个语句再生成一个递归调用。

db block gets请求一个CURRENT块的次数

consistent gets为一块请求consistent read的次数

physical reads从磁盘读取得数据块总数。这个数量等于“直接物理读取”的值加上读入缓冲区的所有数据块

redo size生成的重做的总数量(以字节为单位)

bytes sent via SQL * Net to client从前台进程发送给客户的总字节数

bytes received via SQL * Net from client通过Oracle Net从客户接收的总字节数

SQL*Net roundtrips to/from client发送给客户和从客户接收的Oracle Net消息的总数

sorts (memory)完全在内存中执行并且不需要任何磁盘写入的排序操作的数量

sorts (disk)至少需要一个磁盘写入的排序操作的数量

rows processed在操作过程中处理的行数

四、最后,使用计时特性来测量和比较处理时间

Set timing on

上一页  1 2 3 4 

Tags:Oracle SQL 语句

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接