• Oracle 执行计划中access 和 filter的区别


    一、简要说明:

        Prediceate(谓词):一个查询中的WHERE限制条件。

        在查看执行计划的信息中,经常会看到两个谓词filter和access,它们的区别是什么,理解了这个两个词对我们解读Oracle的执行计划信息会有所帮助。

        简单地说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),filter表示谓词条件的值并不会影响数据访问路径,只起到过滤的作用

    二、举例说明:

     ----创建一张表echo----
    1
    SQL> create table echo as select * from dba_objects; 2 3 Table created. 4 5 SQL> set autotrace trace exp; 6 SQL> set linesize 150; 7 SQL> select * from echo where object_id=1000; 8 9 Execution Plan 10 ---------------------------------------------------------- 11 Plan hash value: 642657756 12 13 -------------------------------------------------------------------------- 14 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 15 -------------------------------------------------------------------------- 16 | 0 | SELECT STATEMENT | | 12 | 2484 | 289 (1)| 00:00:04 | 17 |* 1 | TABLE ACCESS FULL| ECHO | 12 | 2484 | 289 (1)| 00:00:04 | 18 -------------------------------------------------------------------------- 19 20 Predicate Information (identified by operation id): 21 --------------------------------------------------- 22 23 1 - filter("OBJECT_ID"=1000) ----因为表echo没有创建索引,执行计划没有选择数据访问路径的余地,谓词条件在这里只是起到数据过滤的作用,所以使用了filter。 24 25 Note 26 ----- 27 - dynamic sampling used for this statement (level=2) 28 ----创建索引的情况----
    29
    SQL> create index echo_ind on echo(object_id); 30 31 Index created. 32 33 SQL> select * from echo where object_id=1000; 34 35 Execution Plan 36 ---------------------------------------------------------- 37 Plan hash value: 1345159126 38 39 ---------------------------------------------------------------------------------------- 40 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | 41 ---------------------------------------------------------------------------------------- 42 | 0 | SELECT STATEMENT | | 1 | 207 | 2 (0)| 00:00:01 | 43 | 1 | TABLE ACCESS BY INDEX ROWID| ECHO | 1 | 207 | 2 (0)| 00:00:01 | 44 |* 2 | INDEX RANGE SCAN | ECHO_IND | 1 | | 1 (0)| 00:00:01 | 45 ---------------------------------------------------------------------------------------- 46 47 Predicate Information (identified by operation id): 48 --------------------------------------------------- 49 50 2 - access("OBJECT_ID"=1000) ----谓词条件影响到数据访问的路径,选择了索引,所以用access。 51 52 Note 53 ----- 54 - dynamic sampling used for this statement (level=2)
  • 相关阅读:
    HUST第八届程序设计竞赛-G小乐乐打游戏(双bfs)
    HDU-1575-Tr A(矩阵快速幂模板)
    HDU-1061-Rightmost Digit (快速幂模板)
    HihoCoder 1142-三分求极值(三分模板)
    Aizu ITP2_6_A(二分模板)
    Codeforces-938D-Buy a Ticket(最短路设虚拟节点+Dijk优先队列优化)
    POJ-1797-Heavy Transportation(最短路变形)
    HDU-5137-How Many Maos Does the Guanxi Worth(最短路删点)
    POJ-1094-Sorting It All Out (拓扑排序)(判断环和排名是否唯一)
    HDU-1869-六度分离(多源到多源最短路)
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/2869890.html
Copyright © 2020-2023  润新知