`
refurbish
  • 浏览: 27836 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

ORACLE中的索引与组合索引比对

 
阅读更多
同一张表上的两个字段,都比较经常查询,用组合索引好呢?还是分开索引好呢?

看下面一个例子:
create table TB1
(
  OWNER          VARCHAR2(30) not null,
  OBJECT_NAME    VARCHAR2(30) not null,
  SUBOBJECT_NAME VARCHAR2(30),
  OBJECT_ID      NUMBER not null,
  DATA_OBJECT_ID NUMBER,
  OBJECT_TYPE    VARCHAR2(19),
  CREATED        DATE not null,
  LAST_DDL_TIME  DATE not null,
  TIMESTAMP      VARCHAR2(19),
  STATUS         VARCHAR2(7),
  TEMPORARY      VARCHAR2(1),
  GENERATED      VARCHAR2(1),
  SECONDARY      VARCHAR2(1)
)
===========================
       列数      object_type
1 20020 SYNONYM
2 16359 JAVA CLASS

先在表上建组合索引INX_TB1_OTYPE_ONAME;

SQL> select * from tb1 where object_type='SYNONYM';

已选择20020行。


执行计划
----------------------------------------------------------
Plan hash value: 3226679318

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |  1720 |   146K|   149   (3)| 00:00:02 |
|*  1 |  TABLE ACCESS FULL| TB1  |  1720 |   146K|   149   (3)| 00:00:02 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("OBJECT_TYPE"='SYNONYM')


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1957  consistent gets
          0  physical reads
          0  redo size
     942680  bytes sent via SQL*Net to client
      15059  bytes received via SQL*Net from client
       1336  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      20020  rows processed

可以发现不走索引,全表扫描。

SQL> select * from tb1 where object_type='SYNONYM' and object_name='DEPT';

未选定行


执行计划
----------------------------------------------------------
Plan hash value: 480521530

--------------------------------------------------------------------------------

-------------------

| Id  | Operation                   | Name                | Rows  | Bytes | Cost

(%CPU)| Time     |

--------------------------------------------------------------------------------

-------------------

|   0 | SELECT STATEMENT            |                     |     1 |    87 |
2   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| TB1                 |     1 |    87 |
2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INX_TB1_OTYPE_ONAME |     1 |       |
1   (0)| 00:00:01 |

--------------------------------------------------------------------------------

-------------------


Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("OBJECT_TYPE"='SYNONYM' AND "OBJECT_NAME"='DEPT')


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          2  consistent gets
          0  physical reads
          0  redo size
        992  bytes sent via SQL*Net to client
        374  bytes received via SQL*Net from client
          1  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          0  rows processed

走索引了。

分别两个字段建索引
SQL> select * from tb1 where object_type='SYNONYM';

已选择20020行。


执行计划
----------------------------------------------------------
Plan hash value: 419929180

--------------------------------------------------------------------------------

-------------

| Id  | Operation                   | Name          | Rows  | Bytes | Cost (%CPU

)| Time     |

--------------------------------------------------------------------------------

-------------

|   0 | SELECT STATEMENT            |               |  1720 |   146K|    64   (0

)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| TB1           |  1720 |   146K|    64   (0

)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INX_TB1_OTYPE |  1720 |       |     5   (0

)| 00:00:01 |

--------------------------------------------------------------------------------

-------------


Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("OBJECT_TYPE"='SYNONYM')


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       3240  consistent gets
          0  physical reads
          0  redo size
    2184300  bytes sent via SQL*Net to client
      15059  bytes received via SQL*Net from client
       1336  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      20020  rows processed

单走索引,但逻辑读很高。

SQL> select * from tb1 where object_type='SYNONYM' and object_name='DEPT';

未选定行


执行计划
----------------------------------------------------------
Plan hash value: 447681844

-------------------------------------------------------------------------------

-------------

| Id  | Operation                   | Name          | Rows  | Bytes | Cost (%CP

)| Time     |

-------------------------------------------------------------------------------

-------------

|   0 | SELECT STATEMENT            |               |     1 |    87 |     2   (

)| 00:00:01 |

|*  1 |  TABLE ACCESS BY INDEX ROWID| TB1           |     1 |    87 |     2   (

)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INX_TB1_ONAME |     2 |       |     1   (

)| 00:00:01 |

-------------------------------------------------------------------------------

-------------


Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("OBJECT_TYPE"='SYNONYM')
   2 - access("OBJECT_NAME"='DEPT')


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          3  consistent gets
          0  physical reads
          0  redo size
        992  bytes sent via SQL*Net to client
        374  bytes received via SQL*Net from client
          1  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          0  rows processed
走INX_TB1_ONAME 索引 逻辑读略高

SQL> select /*+NO_INDEX(tb1 INX_TB1_OTYPE)*/* from tb1 where object_type='SYNONY
M';

已选择20020行。


执行计划
----------------------------------------------------------
Plan hash value: 3226679318

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |  1720 |   146K|   149   (3)| 00:00:02 |
|*  1 |  TABLE ACCESS FULL| TB1  |  1720 |   146K|   149   (3)| 00:00:02 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("OBJECT_TYPE"='SYNONYM')


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1957  consistent gets
          0  physical reads
          0  redo size
     942680  bytes sent via SQL*Net to client
      15059  bytes received via SQL*Net from client
       1336  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      20020  rows processed

不走索引,效率更高。
分享到:
评论

相关推荐

    Oracle 汉字拼音简码获取

    通过比对输入的汉字字符串与这些预定义字符变量,函数能够识别出每个汉字对应的拼音,并提取出每个拼音的首字母作为拼音简码。 #### 工作流程 1. **初始化变量**:首先,函数声明了一系列变量,包括用于存储拼音...

    oralce数据库表分区介绍

    Oracle数据库中的表分区是一种优化大型数据表查询性能的技术,它将一个大表划分为多个较小、更易管理的部分,每个部分称为一个分区。通过分区,可以显著提高数据的存储、检索和维护效率。以下是关于Oracle数据库表...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例127 将数组中指定索引位置的元素替换 157 实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例127 将数组中指定索引位置的元素替换 157 实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中...

    避开10大常见坑:DeepSeekAPI集成中的错误处理与调试指南.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    前端分析-2023071100789

    前端分析-2023071100789

    基于kinect的3D人体建模C++完整代码.cpp

    基于kinect的3D人体建模C++完整代码.cpp

    搞机工具箱10.1.0.7z

    搞机工具箱10.1.0.7z

    GRU+informer时间序列预测(Python完整源码和数据)

    GRU+informer时间序列预测(Python完整源码和数据),python代码,pytorch架构,适合各种时间序列直接预测。 适合小白,注释清楚,都能看懂。功能如下: 代码基于数据集划分为训练集测试集。 1.多变量输入,单变量输出/可改多输出 2.多时间步预测,单时间步预测 3.评价指标:R方 RMSE MAE MAPE,对比图 4.数据从excel/csv文件中读取,直接替换即可。 5.结果保存到文本中,可以后续处理。 代码带数据,注释清晰,直接一键运行即可,适合新手小白。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水模拟dem-sph-fem耦合 ,基于ANSYS LSDyna; 滑坡入水模拟; DEM-SPH-FEM 耦合,基于DEM-SPH-FEM耦合的ANSYS LSDyna滑坡入水模拟

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    复件 复件 建设工程可行性研究合同[示范文本].doc

    复件 复件 建设工程可行性研究合同[示范文本].doc

    13考试真题最近的t64.txt

    13考试真题最近的t64.txt

    Microsoft Visual C++ 2005 SP1 Redistributable PackageX86

    好用我已经解决报错问题

    嵌入式开发入门:用C语言点亮LED灯的全栈开发指南.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    自动立体库设计方案.pptx

    自动立体库设计方案.pptx

    手把手教你用C语言实现贪吃蛇游戏:从算法设计到图形渲染.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    性能对决:DeepSeek-V3与ChatGPTAPI在数学推理场景的基准测试.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

Global site tag (gtag.js) - Google Analytics