
正文
oracle索引执行计划不对,oracle 索引 高效设计
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Oracle执行计划突变,我是软件测试人员,我们有遇到好几次oracle执行计划...
、安 装 要使用EXPLAIN首先要执行相应的脚本,创建出Explain_plan表。具体脚本执行如下:ORACLE_HOME/rdbms/admin/utlxplan.sql (UNIX)该脚本后会生成一个表这个程序会创建一个名为plan_table的表。
操作1有两个子操作,即操作2和4 操作2有一子操作,即操作3 下面是执行计划的图形表示。如果解读该树:为执行操作1,需执行操作2和4;操作2先完成;为执行2,需执行其子操作3;为执行操作4,需执行操作2。
直接File-New-Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。
相关问答
Q1: 在oracle数据库中,影响优化器生成执行计划的因素有哪些
它的最大优点之一就是在不修改SQL语句和会话执行环境的情况下影响查询优化器的决定。SQL Profile中包含的并非单个执行计划的信息,SQL Profile不会固定一个SQL语句的执行计划。
统计信息给出表的大小 、有少行、每行的长度等信息。这些统计信息起初在库内是没有的,是你在做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行 计划,因些我们应及时更新这些信息。
为Oracle数据库服务器设置操作系统进程优先级不要在操作系统中调整Oracle进程的优先级,因为在Oracle数据库系统中,所有的后台和前台数据库服务器进程执行的是同等重要的工作,需要同等的优先级。
此时数据库中没有关于表与索引数据的统计性描述,如表中有多上行,每行的可选择性等。
Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。
Q2: oracle选择了错误的执行计划,怎么办
直接File-New-Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。
一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。解决方法如下:重新编译一下,如果不成功,就是有语法问题,你需要修改存储过程。
无效状态有两种可能:一种是你的存储过程编辑没有成功,创建了,但里面有语法错误。还有一种是存储过程使用的表有结构上的改变,需要重新编译一下。
这是监听listener有问题,解决方法如下:关掉防火墙;重建监听;主机最好用IP地址,不要用计算机名称。
彻底晕了,没仔细看,ORACLE 9 是么 这个包还没出生吧。。
Q3: oracle索引问题
1、oracle中视图可以创建索引,没有不好的影响,创建索引方法。如下参考:打开Navicat,如下图所示。右键单击oracle数据库,然后单击[openconnection],如下图所示。
2、t_txn为交易表,merchant_id表示商户号,terminal_id表示终端号,txn_time表示交易时间,同时txn_time有索引。研究分析,问题就出在txn_time上,如果走索引会非常慢,反而不走索引(/ +no_index(t) /)速度反而很快。
3、这个问题比较复杂 首先:如果建立联合索引A,B,那么如果where中只有B的话,那么肯定不会使用索引 如果使用单个索引A 和 B 的话,那么一般来说,同时where中同时出现A条件B的话,那么效率没有联合索引高。
4、根据oracle组合索引的实验,得出结论如下:组合索引在等值查询的情况下,哪一列写在前,那一列写在后,性能都是一样的。组合索引在范围查询+等值查询的情况下,等值查询列写在前,范围查询列写在后,索引才最高效。
Q4: Oracle的cost值越大,是不是这SQL的执行计划就越差?
一般而言,执行计划第一行所对应的COST(即成本耗费)值,反应了运行这段SQL的总体估计成本,单看这个总成本没有实际意义,但可以拿它与相同逻辑不同执行计划的SQL的总体COST进行比较,通常COST低的执行计划要好一些。
Cots是Oracle给出的衡量执行计划的单位。通过查看执行计划表格的cost列,即成本花费能够知道哪个步骤花费的成本高,通过查看执行计划表格的行中的objectname列,能够知道是否使用到表中的索引。
使用的缺省值肯定与系统的实际统计值不一致,这可能会导致优化器选择错误的执行计划,影响数据库的性 能。
Sql set autotrace traceonly 这样,就只会列出执行计划,而不会真正的执行语句,大大减少了优化时间。
关于oracle索引执行计划不对和oracle 索引 高效设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






