【索引】反向索引--条件 范围查询

简介: ---查看索引的类型SQL> col table_name for a10SQL> col index_name foa a10SQL> select table_name ,index_name ,index_type from user_indexes wh...

---查看索引的类型
SQL> col table_name for a10
SQL> col index_name foa a10
SQL> select table_name ,index_name ,index_type from user_indexes where table_name in ('T1','T2');
TABLE_NAME INDEX_NAME                     INDEX_TYPE
---------- ------------------------------ ---------------------------
T2         I_ID_T2                        NORMAL/REV  ---反向索引
T1         I_ID                           NORMAL      ---常规索引

Elapsed: 00:00:00.08
---手动转变索引的类型
SQL> alter index i_id rebuild reverse;  ---将常规索引转变为反向索引
Index altered.
Elapsed: 00:00:00.36
SQL> alter index i_id_t2 rebuild noreverse;---将反向索引转变为常规索引
Index altered.
Elapsed: 00:00:00.30
SQL> select table_name ,index_name ,index_type from user_indexes where table_name in ('T1','T2');
TABLE_NAME INDEX_NAME                     INDEX_TYPE
---------- ------------------------------ ---------------------------
T2         I_ID_T2                        NORMAL
T1         I_ID                           NORMAL/REV
Elapsed: 00:00:00.00
---查看反向索引对于范围查询和比较 条件查询的执行计划 表t1 是反向索引,走iffs 原因:因为这里select 的字段是索引字段,所以走了iffs。
SQL> set autot traceonly
SQL> select object_id from t1 where object_id between 2 and 50;
49 rows selected.
Elapsed: 00:00:00.02
Execution Plan
----------------------------------------------------------
Plan hash value: 711836071
-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      |    15 |    75 |    29   (4)| 00:00:01 |
|*  1 |  INDEX FAST FULL SCAN| I_ID |    15 |    75 |    29   (4)| 00:00:01 |
-----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("OBJECT_ID"=2)
Statistics
----------------------------------------------------------
         15  recursive calls
          0  db block gets
        132  consistent gets
        118  physical reads
           .
           .
           .
         49  rows processed

Elapsed: 00:00:00.00
--表t2 走range scan  常规索引
SQL> select object_id from t2 where object_id between 2 and 50;
49 rows selected.
Elapsed: 00:00:00.01
Execution Plan
----------------------------------------------------------
Plan hash value: 3216146664
----------------------------------------------------------------------------
| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT |         |    26 |   130 |     2   (0)| 00:00:01 |
|*  1 |  INDEX RANGE SCAN| I_ID_T2 |    26 |   130 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("OBJECT_ID">=2 AND "OBJECT_ID"Statistics
----------------------------------------------------------
         15  recursive calls
           .
           .
           .
         49  rows processed
-----全表扫描,由于select * 选择所有的字段信息,object_id  索引里面的数据不能满足要求,所以走了全表扫描,当然,更重要的原因是因为索引项在索引块中的杂乱排序。

SQL> select * from t1 where object_id between 2 and 50;
49 rows selected.
Elapsed: 00:00:00.02
Execution Plan
----------------------------------------------------------
Plan hash value: 838529891
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    15 |  1395 |   164   (2)| 00:00:02 |
|*  1 |  TABLE ACCESS FULL| T1   |    15 |  1395 |   164   (2)| 00:00:02 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("OBJECT_ID"=2)
Statistics
----------------------------------------------------------
        244  recursive calls
          0  db block gets
        778  consistent gets
          0  physical reads
          0  redo size
       3278  bytes sent via SQL*Net to client
        525  bytes received via SQL*Net from client
          5  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         49  row

目录
相关文章
|
缓存 NoSQL 网络安全
基于Redis6.2.6版本部署Redis Cluster集群
基于Redis6.2.6版本部署Redis Cluster集群 文章目录 基于Redis6.2.6版本部署Redis Cluster集群 1.Redis6.2.6简介以及环境规划 2.二进制安装Redis程序 2.1.二进制安装redis6.2.6 2.2.创建Reids Cluster集群目录 3.配置Redis Cluster三主三从交叉复制集群 3.1.准备六个节点的redis配置文件 3.2.将六个节点全部启动 3.3.配置集群节点之间相互发现 3.4.为集群中的充当Master的节点分配槽位 3.5.配置三主三从交叉复制模式 4.快速搭建Redis Cluster集群
2312 1
基于Redis6.2.6版本部署Redis Cluster集群
|
数据可视化
mac环境下graphviz安装及使用
mac环境下graphviz安装及使用
3815 0
mac环境下graphviz安装及使用
|
SQL 数据挖掘 数据库
HiveSQL分位数函数percentile()使用详解+实例代码
HiveSQL分位数函数percentile()使用详解+实例代码
5884 0
HiveSQL分位数函数percentile()使用详解+实例代码
|
缓存 前端开发 JavaScript
Vue项目打包部署Nginx配置及前端缓存问题解决
Vue项目打包部署Nginx配置及前端缓存问题解决
1839 0
Vue项目打包部署Nginx配置及前端缓存问题解决
|
6月前
|
算法
重磅!2025年中科院预警期刊名单正式发布!
中国科学院文献情报中心发布的《国际期刊预警名单》旨在防范学术不端与不当出版行为,保护科研生态良性发展。2025年版本聚焦两大问题:学术不端(如引用操纵、论文工厂)和不利于中国学术成果国际化传播的行为(如中国作者占比过高或APC费用不合理)。预警名单动态调整,发布时点从年底改为年初,便于科研人员及时调整投稿策略。被列入预警名单的期刊可能影响职称评审及科研经费认可,建议优先选择中科院分区表推荐期刊,警惕“快速代发”陷阱,并关注期刊官网声明。未来科研生态将更注重规范化与原创性,推动高质量学术发表。维护健康的学术环境对提升中国科研全球影响力至关重要。
876 0
|
11月前
|
设计模式 网络协议 Java
06.动态代理设计模式
本文详细介绍了动态代理设计模式,包括其必要性、概念、实现方式及案例分析。动态代理允许在运行时动态创建代理对象,增强代码复用性和灵活性,减少类膨胀。文章通过对比静态代理,深入解析了动态代理的实现机制,如基于接口和类的动态代理,以及其在Retrofit中的应用。同时,讨论了动态代理的优势和潜在问题,如性能开销和调试难度。最后,提供了丰富的学习资源链接,帮助读者进一步理解和掌握动态代理。
126 1
|
11月前
|
Linux Shell API
ollama 大模型部署 工具 | AIGC
Ollama是一个集成了多种大型语言模型的工具,它支持模型的部署、运行以及API的整合和调用。Ollama为不同操作系统的用户提供了便捷的安装方式,并具备丰富的命令行界面(CLI)和API接口,使得用户可以轻松地管理和运行大型模型。【10月更文挑战第1天】
1474 1
|
Web App开发 算法 PyTorch
vLLM部署Yuan2.0:高吞吐、更便捷
vLLM是UC Berkeley开源的大语言模型高速推理框架,其内存管理核心——PagedAttention、内置的加速算法如Continues Batching等,一方面可以提升Yuan2.0模型推理部署时的内存使用效率,另一方面可以大幅提升在实时应用场景下Yuan2.0的吞吐量。
|
安全 Java 数据库
Spring Security 权限管理详解与案例
Spring Security 是 Spring 框架中用于提供认证和访问控制的模块。它保护了成千上万的应用程序,使其免受未经授权的访问。本文将详细介绍 Spring Security 的权限管理功能,并通过一个实际案例来展示其用法。
1373 1
|
存储 编解码 算法
ISO/IEC 23001:数字版权管理的加密标准(四)
ISO/IEC 23001:数字版权管理的加密标准(四)
219 0

热门文章

最新文章