十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Oracle 12c中新增通过ROWID BATCHED访问数据块的方式,优化原来使用单个rowid进行数据块访问方式带来的资源消耗及对数据块的扫描次数,即TABLE ACCESS BY INDEX ROWID BATCHED特性。该特性通过隐藏参数“ _optimizer_batch_table_access_by_rowid ”控制,默认值为 true ,即默认开启。
成都创新互联公司提供高防主机、云服务器、香港服务器、雅安电信机房等
以下是 SELECT * FROM employees WHERE employee_id > 190;的执行计划部分内容。
--------------------------------------------------------------------------------
|Id| Operation | Name |Rows|Bytes|Cost(%CPU)|Time|
--------------------------------------------------------------------------------
| 0| SELECT STATEMENT | | | |2(100)| |
| 1| TABLE ACCESS BY INDEX ROWID BATCHED|EMPLOYEES |16|1104|2 (0)|00:00:01|
|*2| INDEX RANGE SCAN |EMP_EMP_ID_PK|16| |1 (0)|00:00:01|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("EMPLOYEE_ID">190)
以上执行计划的步骤 2显示了 hr.employees 表上 emp_emp_id_pk 索引的范围扫描。 数据库使用从索引获取的 rowid 来查找 employees 表中的相应行,然后检索它们。 步骤 1 中显示使用从索引中检索的 rowid进行BATCHED访问,数据库将对从索引中检索的rowid进行排序,然后按块顺序访问行,从而减少数据库必须访问的块的次数以降低资源的消耗。