当前位置: 首页 > news >正文

gbase8s数据库常见的索引扫描方式

1 顺序扫描(Sequential scan):数据库服务器按照物理顺序读取表中的所有记录。

常发生在表上无索引或者数据量很少或者一些无法使用索引的sql语句中

2 索引扫描(Index scan):数据库服务器读取索引页,并通过相应的 ROWID 来读取相关的记录。

3 键值扫描(Key-only index scan):如果读取的相关数据包含在索引节点中,数据库服务器就只需读取索引,不需要再去读取相应的数据页。

4 键优先扫描(Key-first index scan):键优先扫描是一种索引扫描,它首先使用索引键过滤器来减少查询读取的数据量。

5 自动索引扫描(Auto-index scan):自动索引扫描特性允许数据库服务器在一个或多个字段上自动创建临时索引,数据库服务器通过这个临时索引读取相应的数据。这个临时索引只在查询过程中生效。

6 多路径扫描 (skip-scan):当数据表上有多个查询字段时,优化器有可能会选择多路径扫描,即同时扫描多字段上的索引 在对所有扫描命中的rowID 取交集

7 索引反转 :在创建索引时默认为升序排序,当sql语句中存在 降序排序时会反转索引

8 rowid扫描: 直接读取位于指定物理位置(由 ROWID 指定)的数据行

9 跳过-重复-索引扫描(skip-duplicate-index):此种扫描模式大多发生在索引嵌套循环的半连接中,例如使用 exists子查询时,内表在扫描到结果时则停止继续扫描

例如

create table ti(c1 int,c2 varchar(50));
insert into ti select level,sys_guid() from dual connect by level < 1000;

create index index_ti_c1 on ti(c1);

select c1 from ti where 1=1

此时发生顺序扫描

执行 select * from ti where c1 = 125时发生索引扫描

执行 select c1 from ti where c1 = 125时发生键值扫描

create table tl(c1 int,c2 int,c3 varchar(50));

insert into tl select level,level +100,sys_guid() from dual connect by level < 100000;

create index index_tl_c12 on tl(c1,c2);

select /*+INDEX(tl index_tl_c12) */ * from tl where (c1 > 0) and (c2 =1000 or c2=55667);

hint强制使用键优先扫描

自动索引扫描更常见的是发生在exists 子句

select * from ti where exists(select 1 from tk where ti.c2=tk.c2);

多路径扫描 常发生在多个查询条件时

此处使用hint 强制控制多路径扫描

select /*+ MULTI_INDEX (ti index_ti_c1,index_ti_c2) */ * from ti where c1 > 150000 and c2 in ('58F6ADC849EB4A489BBBE679AF8CC3F1','3BDD7CE3C5504DA4A399A75B4ACFC026','B927DF1AF6E64EF4BA7310CF4E182236','','');

索引反转:select c1 from ti order by c1 desc;

select * from ti where rowid=444

http://www.lryc.cn/news/443586.html

相关文章:

  • 边缘智能-大模型架构初探
  • 《python语言程序设计》2018版第8章18题几何circle2D类(上部)
  • nginx upstream转发连接错误情况研究
  • alias 后门从入门到应急响应
  • 【远程调用PythonAPI-flask】
  • [今日Arxiv] 思维迭代:利用内心对话进行自主大型语言模型推理
  • glTF格式:WebGL应用的3D资产优化解决方案
  • Unity3D入门(一) : 第一个Unity3D项目,实现矩形自动旋转,并导出到Android运行
  • 数据结构与算法——Java实现 8.习题——移除链表元素(值)
  • 如何理解MVCC
  • 在 Qt 中使用 QLabel 设置 GIF 动态背景
  • Flyway 数据库差异处理
  • CSS 选择器的分类与使用要点一
  • 无人机集群路径规划:麻雀搜索算法(Sparrow Search Algorithm, SSA)​求解无人机集群路径规划,提供MATLAB代码
  • harbor集成trivy镜像扫描工具
  • DMA学习
  • C语言18--头文件
  • vscode软件在 C发中常用插件
  • 【C++ Primer Plus习题】17.2
  • Vue Props传值
  • FreeSWITCH event_socket 配置从其他地址连接
  • 信息安全数学基础(19)同余式的基本概念及一次同余式
  • 网关过滤器:Spring Cloud Gateway
  • 力扣最热一百题——除自身以外数组的乘积
  • 监控易监测对象及指标之:全面监控SQL Server数据库
  • 计算机视觉的应用34-基于CV领域的人脸关键点特征智能提取的技术方法
  • What is new in .NET 8 and C#12
  • 基于R语言的统计分析基础:使用键盘输入数据
  • unity3d入门教程九
  • 着色器 简介