SinoDB创建、更改、删除索引

news2024/11/15 18:53:13

SinoDB数据库的索引组织方式有两种:B+树索引与R树索引。B+ 树是大多数数据库所采用的索引组织方式。R 树索引作为表的辅助访问方法,主要用于查找多维空间数据。本文主要讨论B+ 树索引。

1. B+ 树索引

  B+ 树索引按级别进行组织。最高级别包含指向真实的数据的指针或者地址。其他级包含指向不同级别结点的指针,其中所包含的键小于等于更高级别的键。通过索引访问一行数据时,总是在根结点开始读取,然后沿着低级别读取,最终到包含指向数据的指针。

1.1 索引切分

  当一个新的索引值将被插入到一个已经满了的索引结点时,结点必须切分。B+ 树向根部增长。尝试向已满结点增加键,强迫将其切分为 2 个结点,并促使中间键值移向更高级别结点。如果键值造成的切分比结点中其他的键大,则在切分时就自行放置于该结点中。键向下一个高级别的移动可能也会造成高级别结点的切分。如果该高级结点的满结点是根结点,则也会切分。当根节点切分时,树将继续增加一个级别,形成新的根节点。

1.2 保持索引键值最小

  一个索引键是一个字段值,而索引就是基于该字段所建立的。SinoDB动态服务器索引键的最大值为 390 字节。

  我们要尽量保持索引键值大小为最小,原因有两个:

  • 对于动态服务器,一个结点的大小就是一页的大小。小的键值意味着内存中一个页面上能够存储更多键值,在检索数据时减少读取的I/O操作。

  • 小的键值可以减少 B+ 级别,提高索引读取性能。4 级树索引每行的读取次数比 3 级树多一次。如果要读取100,000行数据,这意味着为获取相同的数据3级树可以少进行 100,000 次读取。

2. 索引类型

SinoDB数据库包含以下索引类型:

① 唯一索引

唯一索引要求索引字段中的一个值只能出现一次。

create  unique index ix_orders on orders(orders_num) in idx_dbs;

② 重复索引

重复索引允许索引字段里出现重样的值。

create index ix_items on items(manu_code);

③ 复合索引

  在两个或更多字段上建立的索引是复合索引。复合索引有利于多字段连接,可以增加索引值的唯一性。复合索引最多包含 16个字段 ,最大键大小为 390 字节。

 create index order_ix1 on orders (order_num, order_date desc);

        这个复合索引中指定了按order_date 递减顺序(缺省为递增顺序)。

  SinoDB数据库的 B+ 树索引可以调转,所以当在单个字段上创建索引时不必指定 ASC (升序)或 DESC (降序)关键词。然而,在复合索引中为特定字段使用 DESC 关键词很有帮助。例如,如果应用经常查询按订单号和订单日期递减排列的订单信息。以上定义的复合索引就消除了数据库服务器重复排序工作。

④ 聚集索引

create cluster index ix_manufact on manufact(manu_code); —创建聚集索引

 alter index index_name to cluster; —更改现有索引为聚集索引

        当创建一个聚集索引或更改已有索引为聚集索引时,动态数据库按索引的顺序复制磁盘上的整个表,然后删除旧的表,所以必须在 dbspace 中有足够的空间来容纳表的副本,这个过程中还要求表的排他读取。

  因为数据是以聚集索引中的顺序被写入的,所以每个表只能有一个聚集索引。

  另外,当插入数据或更新数据时,SinoDB并不维护数据行的聚集索引。因此,聚集索引在相对静态的表中更加高效,在动态变化大的表中则相对低效。

3. online 子句

  ONLINE 子句允许用户在使用表的同时创建索引。没有了 ONLINE 子句,CREATE INDEX 语句会给表加排他锁,这意味着在索引建立期间其他用户不可以使用该表。但是不可以将 CREATE CLUSTER INDEX 语句和 ONLINE 子句一起使用。

create index order_ix1 on orders (order_num, order_date desc) online;

4. 分离索引

  分离索引指索引extent与表extent分开存储。缺省情况下,索引 extent 和数据 extent 在 一个 dbspace 中。也可以指定索引存放在单独的 dbspace 中。

create index customer_ix on customer (zipcode) in cust_ix_dbs;

5. 索引填充因子

  创建索引时可以通过 fillfactor 指定每一页索引填充的百分比。填充因子在索引生命周期中不会一直存在。它只在索引建立的时候起作用。

 create index state_code_idx on state(code) fillfactor 80;

        如果CREATE INDEX 未指定,则缺省使用onconfig配置参数 FILLFACTOR 指定的值。如果上面两处都未指定,则缺省值是百分之90。

  如果预测建表后不会再大量插入数据,创建索引时可以设置较高的FILLFACTOR 值。如果预测建表后还要大量插入数据,则使用较低的FILLFACTOR 值,以防止结点立即切分。否则,如果 FILLFACTOR 设定得过低,则索引使用的磁盘空间可能产生不必要的增长。

6. 更改、删除、重命名索引

alter index ix_man_cd to cluster;    —更改索引
rename index ix_cust to new_ix_cust;    —重命名索引
drop index ix_stock;  —删除索引

         更改、删除或重命名系统自己创建的索引(比如系统用于强制执行约束的索引)是不允许的,因为这类索引名称以空格开始。为更改、删除或重命名系统创建的索引,必须首先删除相关约束。

7. sysindexes 系统目录

sysindexes 描述了数据库中的每个索引。
 

 

[informix@vm84145 ~]$ dbaccess testdb3 -

Database selected.

> select sysindexes.*
> from sysindexes, systables where
> tabname = "fjta_news"
> and systables.tabid = sysindexes.tabid;

idxname    idx_fjta_news_id
owner      informix
tabid      179
idxtype    D
clustered  
part1      1
part2      0
part3      0
part4      0
part5      0
part6      0
part7      0
part8      0
part9      0
part10     0
part11     0
part12     0
part13     0
part14     0
part15     0
part16     0
levels     2
leaves     114.0000000000
nunique    15819.00000000
clust      7635.000000000

1 row(s) retrieved.

>

         sysindexes 的每一数据行包含一个索引名称、所有者、 tabid、索引类型、是否聚集错音、以及索引中使用的字段数量。

  sysindexes 表包含域 part1 到 part16,标识了每个索引基于的字段。由于每个索引可以存储 16个字段,所以在复合索引中使用的最大列数量是 16。

 更多信息内容请移步星瑞格官方社区,期待大家加入 
Sinoregal Tech ForumAsk questions, share solutions, and get to know the Sinoregal community.icon-default.png?t=N7T8https://forum.sinoregal.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1595948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

家庭网络防御系统搭建-将NDR系统的zeek日志集成到security onion

在前面的文章中安装了zeek,这里,安装了securityonion,这里,本文讲述如何将zeek生成的日志发送到siem security onion之中。 所有日志集成的步骤分为如下几步: 日志收集配置日志发送接收日志解析配置日志展示配置 ZEEK日志收集配…

初识three.js创建第一个threejs3D页面

说到3D&#xff0c;想必大家都能想到three.js&#xff0c;它是由WebGL封装出来的&#xff0c;接下来&#xff0c;我手把手教大家创建一个简单的3D页面 话尽在代码中&#xff0c;哈哈 大家可以复制代码玩一下 <!DOCTYPE html> <html lang"en"><head&…

华为昇腾AI芯片加持,9.1k Star 的 Open-Sora-Plan,国产Sora要来了吗

Aitrainee | 公众号&#xff1a;AI进修生 哇&#xff0c;今天Github趋势榜第一啊&#xff0c;为了重现Sora&#xff0c;北大这个Open-Sora-Plan&#xff0c;希望通过开源社区力量的复现Sora&#xff0c;目前已支持国产AI芯片(华为昇腾&#xff09;&#xff0c;这回不用被卡脖子…

【iOS】SDWebImage源码阅读笔记

文章目录 前言一、设计目的二、特性三、用法1.UITableView 中使用 UIImageViewWebCache2.使用回调Blocks3.SDWebImageManager 的使用4.单独使用 SDWebImageDownloader 异步下载图片5.单独使用 SDImageCache 异步缓存图片 四、实现原理五、具体实现流程sd_setImageWithURLsd_int…

实习僧网站的实习岗位信息分析

目录 背景描述数据说明数据集来源问题描述分析目标以及导入模块1. 数据导入2. 数据基本信息和基本处理3. 数据处理3.1 新建data_clean数据框3.2 数值型数据处理3.2.1 “auth_capital”&#xff08;注册资本&#xff09;3.2.2 “day_per_week”&#xff08;每周工作天数&#xf…

Matlab-AMF算法(自适应中值滤波Adaptive Median Filtering)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 AMF&#xff08;Adaptive Median Filter&#xff0c;自适应中值滤波&#xff09;是一种用于图像处理和信号处理的滤波算…

OpenHarmony南向开发案例:【智能垃圾桶】

样例简介 智能垃圾桶可以通过数字管家应用来监测垃圾桶当前可用容量&#xff0c;提醒主人及时处理垃圾&#xff1b;通过日程管家可以实现和其他智能设备联动。 核心组件位置功能距离传感器置于垃圾桶盖内侧感应垃圾量红外传感器置于垃圾桶前端感应是否有人靠近光敏电阻开发板…

SpringMvc文件上传下载案例

1、文件上传 文件上传功能如下&#xff1a; 客户端使用ElementPlus上传文件 服务器使用 SpringMvc接收文件 1.1客户端代码 ElementPlus的<el-upload>可以非常方便的处理文件上传功能&#xff0c;即美观又强大。 传送门--》 upload组件文档 1.1.1、使用axios工具上传…

Java算法之时间复杂度和空间复杂度的概念和计算

1. 算法效率 如何去衡量一个算法的好坏&#xff1f; 通常我们从时间效率和空间效率两个方面去分析算法的好坏。时间效率即时间复杂度&#xff0c;空间效率被称为空间复杂度。时间复杂度主要是衡量一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间…

【面试题】s += 1 和 s = s + 1的区别

文章目录 1.问题2.发现过程3.解析 1.问题 以下两个程序真的完全等同吗&#xff1f; short s 0; s 1; short s 0; s s 1; 2.发现过程 初看s 1 和 s s 1好像是等价的&#xff0c;没有什么区别。很长一段时间内我也是这么觉得&#xff0c;因为当时学习c语言的时候教科书…

系统思考—时间滞延

“没有足够的时间是所有管理问题的一部分。”——彼得德鲁克 鱼和熊掌可以兼得&#xff0c;但并不能同时获得。在提出系统解决方案时&#xff0c;我们必须认识到并考虑到解决方案的实施通常会有必要的时间滞延。这种延迟有时比我们预想的要长得多&#xff0c;特别是当方案涉及…

AlgorithmDay11

day11 对于-*/这些运算符&#xff0c;它们并不是单个字符&#xff0c;而是由两个字符组成的运算符。在C中&#xff0c;这些运算符是作为字符串处理的&#xff0c;因此应该使用双引号来表示。 例如&#xff1a; string op ""; // 表示加法运算符另一方面&#xff…

vue3+高德地图(或echarts)+turfjs实现等压线,色斑图(用于显示气象,环境等地图场景)

首先是turf.js(英文官网),也有中文网不过也就目录翻译了一下. 高德官网自行获得key echarts官网 使用turf的isobands api实现. 数据: 需要准备geojson格式经纬度信息业务值(比如温度,高度,光照只要是number值什么数据都可以) 国内各地区geojson数据点这里获得 参考的是这位大佬…

30元腾讯云服务器搭建幻兽帕鲁Palworld多人联机游戏,畅玩

幻兽帕鲁太火了&#xff0c;官方palworld服务器不稳定&#xff1f;不如自建服务器&#xff0c;基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器&#xff0c;超简单有手就行&#xff0c;全程自动化一键部署10秒钟即可搞定&#xff0c;无需玩家手动部署幻兽帕鲁游戏程…

[通俗易懂:Linux标准输入/输出和重定向]Shell脚本之 > /dev/null 2>1命令详解

目录标题 一、> /dev/null 2>&1 命令解析二、/dev/null 文件浅显理解三、标准输入、标准输出、标准错误输出四、输入重定向、输出重定向五、命令作用与应用场景 如果想看命令意义&#xff0c;可以直接跳到第五部分 一、> /dev/null 2>&1 命令解析 我们在别…

7 个 Python 问题,来扫扫盲

这 7 个问题&#xff0c;我是有收获的&#xff0c;整理如下&#xff1a; 1、反射算术运算符 你可能知道 Python 里面的魔法函数&#xff0c;比如 __add__ 和 __sub__ 代表 - 运算符&#xff0c;表示 obj /- something&#xff0c;但你可能不知道还有一个 __radd__&#xff0…

JMeter入门教程 —— 事务!

简介&#xff1a; JMeter中事务的基本介绍 1.任务背景 JMeter中的事务是通过事务控制器实现的。&#xff0c;为了衡量服务器对某一个或一系列操作处理的响应时间&#xff0c;需要定义事务。下面我们详细介绍在JMeter中如何使用事务 2.任务目标 掌握基于JMeter性能测试脚本开…

标准版uni-app移动端页面添加/开发操作流程

页面简介 uni-app项目中&#xff0c;一个页面就是一个符合Vue SFC规范的.vue文件或.nvue文件。 .vue页面和.nvue页面&#xff0c;均全平台支持&#xff0c;差异在于当uni-app发行到App平台时&#xff0c;.vue文件会使用webview进行渲染&#xff0c;.nvue会使用原生进行渲染。…

若依框架针对漏洞升级的记录

背景&#xff1a;项目部署在生产环境上以后&#xff0c;漏洞扫描的时候&#xff0c;发现各种漏洞需要修复&#xff0c;很多漏洞的升级后面都记不住了&#xff0c;所以现在都简单记录一下处理的步骤 20240415 解决方案&#xff1a;直接修改配置文件中的Spring security的版本…

bugku-web-需要管理员

页面源码 <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>404 Not Found</title> </head> <body> <div idmain><i> <h2>Something error:</h2…