㈠ Oracle如何查看sql实际执行计划
1、 查看最近执行的SQL语句
select/*recentsql*/s.SQL_ID,s.CHILD_NUMBER,s.HASH_VALUE,s.ADDRESS,s.EXECUTIONS,s.SQL_TEXT
fromv$sqls
wheres.PARSING_USER_ID=(
selectu.user_idfromall_usersu
whereu.username='YH_TEST'
)ands.COMMAND_TYPEin(2,3,6,7,189)
anpper(s.SQL_TEXT)notlikeupper('%recentsql%')
select/*+gather_plan_statistics*//*plan_statistics1*/name,salaryfromtestwherename='t1';
2、使用dbms_xplan.display_cursor查看执行计划,它的用法见笔记 《dbms_xplan.display_cursor的用法》,
注意了:若dbms_xplan.display_cursor要以ALLSTATS LAST格式输出的话,/*+gather_plan_statistics*/这个提示信息放到查询语句中是必须的。
㈡ oracle数据库中怎么查看sql的执行计划
看你用什么工具,如果是PL/sql,直接F5就好;
sqlplus的话,登陆成功后,先执行set autotrace on,然后在运行sql就可以看到了
㈢ oracle sql执行计划怎么看
一、通过PL/SQL Dev工具
1、直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。
2、先执行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的执行计划了,看到的结果和1中的一样,所以使用工具的时候推荐使用1方法。
注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。还有使用工具方法查看计划看到的信息不全,有些时候我们需要sqlplus的支持。
二、通过sqlplus
1.最简单的办法
Sql> set autotrace on
Sql> select * from al;
执行完语句后,会显示explain plan 与 统计信息。
这个语句的优点就是它的缺点,这样在用该方法查看执行时间较长的sql语句时,需要等待该语句执行成功后,才返回执行计划,使优化的周期大大增长。如果不想执行语句而只是想得到执行计划可以采用:
Sql> set autotrace traceonly
这样,就只会列出执行计划,而不会真正的执行语句,大大减少了优化时间。虽然也列出了统计信息,但是因为没有执行语句,所以该统计信息没有用处,如果执行该语句时遇到错误,解决方法为:
(1)在要分析的用户下:
Sqlplus > @ ?
dbmsadminutlxplan.sql
(2) 用sys用户登陆
Sqlplus > @ ?sqlplusadminplustrce.sql
Sqlplus > grant plustrace to user_name;
- - user_name是上面所说的分析用户
2.用explain plan命令
(1) sqlplus > explain plan for select * from testdb.myuser
(2) sqlplus > select * from table(dbms_xplan.display);
㈣ oracle sql 执行计划怎么看
ING COUNT(1) >=2
ORDER BY 2 DESC ;
--根据具体的SQL_ID查看对应的SQL语句
SELECT * FROM V$SQL
WHERE SQL_ID=:SQL_ID;
可以通过下面SQL语句查询对应SQL的所有执行计划或部分执行计划,分析出现多个执行计划的原因
--查询SQL所有执行计划
SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_