我想看看Oracle中的执行计划。我试过这个:
select /*+ gather_plan_statistics */ /*test4*/ * from tag
where key='name';
SELECT t.*
FROM v$sql s, table(DBMS_XPLAN.DISPLAY_CURSOR(s.sql_id, s.child_number, 'TYPICAL PROJECTION')) t WHERE sql_text LIKE '%test4%';
结果是:
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 22 (100)| |
|* 1 | TABLE ACCESS FULL| TAG | 14 | 714 | 22 (0)| 00:00:01 |
我的问题是行不正确,有3019行带键='名称'。 这是一个估计值。
我的问题是,我怎样才能获得真正的价值?
谢谢,安德烈
答案 0 :(得分:2)
您应该使用此命令:
select * from table(dbms_xplan.display_cursor(format => 'ALLSTATS LAST'));
并查看输出中列E-Rows
和A-Rows
之间的差异。
另见How do I know if the cardinality estimates in a plan are accurate?
答案 1 :(得分:1)
在SQL * Plus中,您可以使用AUTOTRACE功能。
有关示例,请参阅here。
答案 2 :(得分:0)
这样做:
alter session set statistics_level=ALL;
然后运行:
select * from table( dbms_xplan.display_cursor( null, null, 'ALLSTATS LAST' ) );