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去查找具体的数据)?































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





...全文
292 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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找到真正的行数据
资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在 Python 生态,pip 和 conda 是常用的库管理与安装工具。但因网络状况,在国内直接连官方仓库常会速度慢甚至连不上。为改善此状况,可切换到国内镜像服务器,如清华 TUNA 的镜像服务,以下分别介绍 pip 和 conda 的配置方法。 对于 conda,首先它是一个含丰富 Python 包及环境管理功能的流行科学计算平台。要更换国内源,可去清华 TUNA 的镜像站下载安装包,其也提供了 Anaconda 仓库及第三方源镜像。在 Linux 或 Mac 系统,可在用户目录下创建或编辑 .condarc 文件,文件内容如下: Windows 用户因系统限制无法直接创建以 . 开头的文件名,可通过运行 conda config --set show_channel_urls yes 来生成 .condarc 文件,再按上述内容编辑。之后执行 conda clean -i 清除索引缓存,以确保使用镜像站索引。最后用 conda create -n myenv numpy 命令测试配置是否成功。 对于 pip,临时更换源可在 pip install 命令时加 -i 参数指定源,如 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 。永久更换源,Linux 系统在 ~/.pip/pip.conf(无则创建)添加以下内容: Windows 和 Mac 用户分别在 %USERPROFILE%\pip\pip.ini(Windows)或 $HOME/Library/Application Support/pip/pip.conf(Mac)进行相同配置。 通过上述步骤,能提高 pip 和 conda 在国内的安

17,382

社区成员

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

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