Oracle 执行计划中access 和 filter的区别
来源:互联网 发布:股票预测软件破解 编辑:程序博客网 时间:2024/04/29 16:39
一、简要说明:
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 Plan10 ----------------------------------------------------------11 Plan hash value: 64265775612 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 Note26 -----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 Plan36 ----------------------------------------------------------37 Plan hash value: 134515912638 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 Note53 -----54 - dynamic sampling used for this statement (level=2)
0 0
- Oracle 执行计划中access 和 filter的区别
- 执行计划的access和filter的区别
- 隐式转换在执行计划中对Access predicates 和Filter predicates 的影响
- 探索执行计划中filter的原理
- oracle执行计划中的filter
- 执行计划中的access 与 filter
- Oracle中Access & filter
- oracle 执行计划 filter下多个节点的优化
- ORACLE执行计划的步骤和顺序
- ORACLE执行计划的步骤和顺序
- oracle执行计划和hint的认识
- ORACLE的执行计划
- ORACLE的执行计划
- Oracle的执行计划
- oracle的执行计划
- ORACLE的执行计划
- oracle中查看已执行sql的执行计划
- Oracle中查看已执行sql的执行计划
- iOS开发入门:Xcode常用快捷键
- 11个强大的Visual Studio调试小技巧
- C语言模拟试题4
- 一句一笑,笑成蛇精病
- ActiveMQ
- Oracle 执行计划中access 和 filter的区别
- 解题笔记(31)——从数列1,2...n中随意取几个数,使其和等于m
- 反转一个链表。递归算法
- 面向对象中类的构造函数是没有返回值的 或者说是返回值无用
- 无尽弹珠
- OSI七层协议和TCP/IP四层协议之比较
- QT5.3.2+mingw静态编译(生成exe大约14M)
- 如何优雅的管理游戏资源
- View.VISIBLE、INVISIBLE、GONE的区别