oracle中如何查看sql的执行计划,一个sql查询结果产生的IO,B树索引查找机制是不是类似于sqlserver的书签查找

WYhack 2012-08-28 02:27:02
还有怎么查看具体sql的执行计划?

类似于sqlserver的set statistics IO on和set statistics profile on的功能,会出来类似的结果:




--表 'TABLE1'。扫描计数 1,逻辑读取 1883 次,物理读取 7 次,预读 1870 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。



还有oracle的B树索引
叶节点存储的数据行的地址,而不是像sqlserver的那样,B树索引的叶节点直接存储的是数据,那么oracle中按B树索引所在的列查找时,可不可以认为是sqlserver中非聚集索引的书签查找原理(根据RID去查找具体的数据)?































---------------------------------------------广告隔离线----------------------------------





...全文
284 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fw0124 2012-08-28
  • 打赏
  • 举报
回复
叶子节点中存储的索引键值是按照索引键有序存放的
WYhack 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

1:oracle查看执行计划
你可以在session中set autotrace on,你可以看到统计信息和执行计划
也可以使用dbms_xplan包去查看执行计划
比如
alter session set statistics_level='ALL';
set autotrace off
select * from nls_test;--你的查询语句
select * from……
[/Quote]

oracle的B树中是在leaf node中存储索引键以及一个指向行的rowid,通过这个rowid找到真正的行数据

那在leaf node中存储的索引键值是不是以索引键的顺寻存放的呢?
fw0124 2012-08-28
  • 打赏
  • 举报
回复
ORACLE中如果要有序存储数据,要用索引组织表-IOT.
IOT中,数据根据主键有序地存储。
WYhack 2012-08-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

B树索引的叶子节点包含各个索引键以及一个rowid(指向所索引的行)。
在传统B*树索引中,键都指向一行。
B*树聚簇索引不同,一个聚簇键会指向一个块,其中包含与这个聚簇键相关的多行,但是聚簇并不是有序地存储数据。
而SQL Server中的聚簇索引则要求行按索引键有序的方式存储.
[/Quote]
聚簇并不是有序地存储数据
那也就是说oracle没有聚集索引了?
fw0124 2012-08-28
  • 打赏
  • 举报
回复
B树索引的叶子节点包含各个索引键以及一个rowid(指向所索引的行)。
在传统B*树索引中,键都指向一行。
B*树聚簇索引不同,一个聚簇键会指向一个块,其中包含与这个聚簇键相关的多行,但是聚簇并不是有序地存储数据。
而SQL Server中的聚簇索引则要求行按索引键有序的方式存储.

fw0124 2012-08-28
  • 打赏
  • 举报
回复
如果用sqlplus,执行set autotrace on,之后执行的查询,都会把执行计划打出来。
set autotrace off可以关闭此功能。

如果用sqldeveloper, 选中需要执行的查询语句,F6, 右下的explain窗口会显示查询计划。

通用的方法,把select * from dual换成你的查询语句就行:
explain plan for select * from dual;
select * from table(dbms_xplan.display);
BenChiM888 2012-08-28
  • 打赏
  • 举报
回复
1、explain plan for sql语句
select * from table(dbms_xplan.display);

2、sqlplus中 set autotrace trace explain
然后执行你的sql

3、打开sql追踪
loveofmylife 2012-08-28
  • 打赏
  • 举报
回复
1:oracle查看执行计划
你可以在session中set autotrace on,你可以看到统计信息和执行计划
也可以使用dbms_xplan包去查看执行计划
比如
alter session set statistics_level='ALL';
set autotrace off
select * from nls_test;--你的查询语句
select * from table(dbms_xplan.display_cursor(null,null,'runstats_last'));

具体百度

2:oracle的B树中是在leaf node中存储索引键以及一个指向行的rowid,通过这个rowid找到真正的行数据

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧