Oracle 查看执行计划

    xiaoxiao2021-03-25  101

    执行计划:即数据库计划如何去执行SQL语句

    查看执行计划:

    方法一:选中需查看执行计划的SQL语句 然后按 F5      效果图如下:

    方法二:1.执行       EXPLAIN PLAN FOR    +需查看执行计划的SQL语句                  2.执行     select * from table(dbms_xplan.display)

                      效果图如下:

    以上执行计划中各列的意义如下 id:序号(id的大小不代表执行的先后顺序) Operation:操作内容 Rows:当前操作的cardinality,数据库估算当前返回结果集的行数,这个行源可能是一个表,一个索引,也有可能是一个子查询。 Bytes:当前操作的数据量的大小 Cost(%CPU):数据库计算出来的一个数值,用于说明SQL执行的代价。 Time:数据库估算当前操作所需要的时间

    access:表示谓词条件的值会影响数据的访问路径(表还是索引,这里是索引)

    如果是filter则表示谓词条件的值只起到过滤的作用 并不会影响数据访问路径

    ---------------------------------------------------------测试例子------------------------------------------------------------------------------------------------

    执行未优化代码

    EXPLAIN PLAN FOR select s_code,site_name,su_site from tb_site ts ,tb_bill tb  where  ts.site_name=tb.send_site 执行select * from table(dbms_xplan.display) 效果图如下

    执行优化代码

    EXPLAIN PLAN FOR select s_code,site_name,su_site from tb_site ts where exists(select 'X' from tb_bill tb  where  ts.site_name=tb.send_site) 执行 select * from table(dbms_xplan.display)效果图如下:

    由上两图对比可见

    未优化SQL 的Rows为4342 (与统计查询结果一样)

    优化后SQL的ROWs为169

    如此可见

    rows 的多少直接影响了执行计划访问数据的选择  是选择使用索引还是使用全表扫描的方式

    转载请注明原文地址: https://ju.6miu.com/read-18681.html

    最新回复(0)