首页 > 软件开发 > ORACLE >

如何避免TABLE ACCESS BY INDEX ROWID回表

来源:互联网 2023-03-17 00:00:15 237

如何避免TABLE ACCESS BY INDEX ROWID回表,下面简单介绍。k36办公区 - 实用经验教程分享!

工具/原料

  • plsql
  • oracle

方法/步骤

  • 1

    在数据中,当查询数据的时候,在索引中查找索引后,获得该行的rowid,根据rowid再查询表中数据,就是回表。如下例子:新建查询窗口。k36办公区 - 实用经验教程分享!

    如何避免TABLE ACCESS BY INDEX ROWID回表k36办公区 - 实用经验教程分享!

  • 1本页面未经授权抓取自百度经验
  • 2

    新恩陕建查询语句。k36办公区 - 实用经验教程分享!

    select *k36办公区 - 实用经验教程分享!

    from sys_user ak36办公区 - 实用经验教程分享!

    inner join sys_user_role bk36办公区 - 实用经验教程分享!

    on a.id = b.user_idk36办公区 - 实用经验教程分享!

    inner join sys_role ck36办公区 - 实用经验教程分享!

    on b.role_id = c.idk36办公区 - 实用经验教程分享!

    where a.login_name = admink36办公区 - 实用经验教程分享!

    如何避免TABLE ACCESS BY INDEX ROWID回表k36办公区 - 实用经验教程分享!

  • 3

    查看执行计划。分析是否在表中创建索引。查询条件是否涉及非索引字段。k36办公区 - 实用经验教程分享!

    如何避免TABLE ACCESS BY INDEX ROWID回表k36办公区 - 实用经验教程分享!

  • 4

    查询全部数据*涉及到先索引查询对应的rowid,然后根据rowid再次查询数据。我们改写只查询索引列,即可消除回表。k36办公区 - 实用经验教程分享!

  • 5

    改写:k36办公区 - 实用经验教程分享!

    select a.id, c.idk36办公区 - 实用经验教程分享!

    沫晃 from sys_user ak36办公区 - 实用经验教程分享!

    inner join sys_user_role bk36办公区 - 实用经验教程分享!

    on a.id = b.user_idk36办公区 - 实用经验教程分享!

    inner join sys_role ck36办公区 - 实用经验教程分享!

    on b.role_id = c.idk36办公区 - 实用经验教程分享!

    where a.id = 1;k36办公区 - 实用经验教程分享!

    如何避免TABLE ACCESS BY INDEX ROWID回表k36办公区 - 实用经验教程分享!

  • 6

    查看执行计划。霜召板没有回表。k36办公区 - 实用经验教程分享!

    如何避免TABLE ACCESS BY INDEX ROWID回表k36办公区 - 实用经验教程分享!

  • 注意事项

    • 查询全部数据*涉及到先索引查询对应的rowid,然后根据rowid再次查询数据。我们改写只查询索引列,即可消除回表。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!k36办公区 - 实用经验教程分享!


    标签: oracle

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码