达梦数据库索引的建立使用

达梦数据库支持聚集索引,复合索引,函数索引,唯一索引,位图索引等等。

一.建立索引的准则

1.1在表中插入数据后创建索引

一般情况下,在插入或装载了数据后,为表创建索引会更加有效率。如果在装载数据之前创建了一个或多个索引,那么在插入每行时DM数据库都必须更改和维护每个索引,使得插入效率降低。

1.2怎样创建正确的索引

(1)如果需要经常地检索大表中的少量的行,就为查询键创建索引;

(2)为了改善多个表的连接的性能,可为连接列创建索引;

(3)主键和唯一键自动具有索引,在外键上很多情况下也创建索引;

(4)小表不需要索引;

(5)列中的值相对比较唯一 ;

(6)取值范围大,适合建立索引; 

(7)CLOB和TEXT只能建立全文索引、BLOB不能建立任何索引。

1.3为性能而安排索引列

在 CREATE INDEX 语句中列的排序会影响查询的性能。通常,将最常用的列放在最前面。如果查询中有多个字段组合定位,则不应为每个字段单独创建索引,而应该创建一个组合索引。当两个或多个字段都是等值查询时,组合索引中各个列的前后关系是无关紧要的。但是如果是非等值查询时,要想有效利用组合索引,则应该按等值字段在前,非等值字段在 后的原则创建组合索引,查询时只能利用一个非等值的字段。

1.4限制每个表的索引的数量

一个表可以有任意数量的索引。但是,索引越多,修改表数据的开销就越大。当插入或删除行时,表上的所有索引也要被更改;更改一个列时,包含该列的所有索引也要被更改。因此,在从表中检索数据的速度和更新表的速度之间有一个折衷。例如,如果一个表主要仅用于读,则索引多就有好处;如果一个表经常被更新,则索引不宜多建。

二.创建索引

2.1创建聚集索引

DM数据库中表(列存储表和堆表除外)都是使用 B+树索引结构管理的,每一个普通表都有且仅有一个聚集索引,数据都通过聚集索引键排序,根据聚集索引键可以快速查询任何记录。

当建表语句未指定聚集索引键时,DM数据库的默认聚集索引键是ROWID。若指定索引键,表中数据都会根据指定索引键排序。建表后,DM数据库也可以用创建新聚集索引的方式来重建表数据,并按新的聚集索引排序。例如,可以对employee表以employee_name列新建聚集索引。

先建立索引表空间ind_tbs:

Sql>create tablespace ind_tbs datafile '/dm8/data/DAMENG/ind_tbs.dbf' size 32 autoextend on next 10 maxsize 2000;

Sql>create index ind_emp on dmhr.employee(employee_name) tablespace ind_tbs;

2.2复合索引

Sql>create index ind_emp_dep on dmhr.employee(employee_id,department_id) tablespace ind_tbs;

2.3函数索引

基于函数的索引促进了限定函数或表达式的返回值的查询,该函数或表达式的值被预先计算出来并存储在索引中。

Sql> create index ind_emp1 on dmhr.employee(abs(salary)) tablespace ind_tbs;

2.4位图索引

位图索引主要针对含有大量相同值的列而创建。位图索引被广泛引用到数据仓库中。

Sql>create bitmap index ind_t on t1(id);

2.5唯一索引

索引可以是唯一的或非唯一的。唯一索引可以保证表上不会有两行数据在键列上具有相同的值。

SQL> create unique index ind_t2 on t2(id);

三.索引重建

当一个表经过大量的增删改操作后,表的数据在物理文件中可能存在大量碎片,从而影响访问速度。另外,当删除表的大量数据后,若不再对表执行插入操作,索引所处的段可能占用了大量并不使用的簇,从而浪费了存储空间。可以使用重建索引来对索引的数据进行重组,使数据更加紧凑,并释放不需要的空间,从而提高访问效率和空间效率。

DM数据库提供的重建索引的系统函数为:

SP_REBUILD_INDEX(SCHEMA_NAME varchar(256), INDEX_ID int);

SCHEAM_NAME为索引所在的模式名。

INDEX_ID为索引ID。

使用说明:

 1.水平分区子表,临时表和系统表上建的索引不支持重建

 2.虚索引和聚集索引不支持重建

Sql>select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='IND_EMP_DEP';

Sql>sp_rebuild_index('DMHR','335555517');

SQL> alter index DMHR.IND_EMP_DEP rebuild;

在线重建索引

SQL> alter index DMHR.IND_EMP_DEP rebuild online;

四.删除索引

用户可能出于以下某项原因需要删除一个索引:

1.不再需要该索引;

2.该索引没有为针对其相关的表所发布的查询提供所期望的性能改善。例如,表可能很小,或者尽管表中有许多行但只有很少的索引项;

3.应用没有用该索引来查询数据。要想删除索引,则该索引必须包含在用户的模式中或用户必须具有DROP ANY INDEX 数据库权限。索引删除之后,该索引的段的所有簇都返回给包含它的表空间,并可用于表空间中的其他对象。

Sql>DROP INDEX dmhr.IND_EMP_DEP;

五.查看索引信息

创建索引后,可以通过INDEXDEF系统函数查看索引的定义。

INDEXDEF(INDEX_ID int, PREFLAG int);

INDEX_ID为索引 ID。

PREFLAG表示返回信息中是否增加模式名前缀。

例如,需要查看索引 IND_EMP的定义,那么使用以下语句查看索引定义。

Sql>select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='IND_EMP';

Sql>SELECT INDEXDEF(33555516, 0); 或 SELECT INDEXDEF(33555516, 1);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进阶篇丨链路追踪(Tracing)很简单:常见问题排查

作者:涯海 经过前面多篇内容的学习,想必大部分同学都已经熟练掌握分布式链路追踪的基础用法,比如回溯链路请求轨迹,定位耗时瓶颈点;配置核心接口黄金三指标告警,第一时间发现流量异常;大促前梳…

电赛E题声源定位跟踪系统制作全过程

声源定位 文章目录 声源定位前言一、题目二、设计步骤1.设计思路2.声源追踪定位的分析3.舵机转角的确定4.声源距离的计算 三、代码编写1.求均值2.卡尔曼滤波 复刻一下电赛的声源定位 前言 2023年的电子设计竞赛快要开始了,同时我也已经大三下了正在准备找工作&…

涨点神器:基于Yolov5/Yolov7的小目标性能提升

1.小目标介绍 目标检测近十年涌现了一大批如Faster R-CNN、RetinaNet、YOLO等可以在工业界实用的目标检测方法,但小目标检测性能差的问题至今也没有被完全解决。因为Swin Transformer的提出,COCO test-dev上的 AP 已经刷到64 ,但小目标检测性能(即APS )和大目标检测性能(…

分享以MM32SPIN0280单片机为主控洗衣机方案

洗衣机是利用电能产生机械作用来洗涤衣物的清洁电器,按驱动方法有3类,直接驱动,皮带驱动,波轮式驱动。 主变一体洗衣机方案以MM32SPIN0280为主控 MCU规格: -ArmCortex-M0内核,最高工作频率可达96MHz -128…

MOSN 基于延迟负载均衡算法——走得更快,期待走得更稳

文|纪卓志(GitHub ID:jizhuozhi) 京东高级开发工程师 MOSN 项目 Committer 专注于云原生网关研发的相关工作,长期投入在负载均衡和流量控制领域 前言 这篇文章主要是介绍 MOSN 在 v1.5.0 中新引入的基于延迟的负载均衡算法#2…

【vimsolo】让vim看起来像VSCode:颜色主题和状态栏的配置

文章目录 1. 目的2. 理念: vimsolo3. vimrc: 配置颜色4. vimrc: 配置状态栏5. 拷贝颜色主题和.vimrc: python安装脚本 1. 目的 习惯了 VSCode 默认的配色:黑色主题,蓝色状态栏。偶尔使用 Vim 时想让 vim 伪装的像 VSCode,不考虑花…

float浮点/double双精度浮点和二进制的相互转换,小白也能看明白!

二进制文件包含了太多的数据,如何看懂二进制文件,决定于基础。 文章目录 前言1、重点知识1.1何为二进制文件1.2浮点和双精度的浮点如何生成二进制1.2.1 float和double的基础知识1.2.2 IEEE754约束的重点1.2.3 浮点是如何表示二进制 1.3 例子说明 双精度d…

市面上常见的语音芯片的IO口有哪些作用

语音芯片的IO口有哪些作用? 语音芯片的IO口一般有多种用途,包括以下几种: 1. 语音输入:可以通过外部麦克风接口,将外部声音信号输入到语音芯片中,进行语音信号处理。 2. 语音输出:语音芯片可…

Java版电子招投标系统源码之了解电子招标投标全流程

随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同&#xff0…

【MySQL】实验十 E-R图

文章目录 1. 学校2. 院系3. 图书馆4. 舰队5. 工厂6. 网购7. IT8. 医院9. 公司1. 学校 设有如下实体: 班主任:工号、姓名、电话 班级:班号、专业、毕业总学分 学生:学号、姓名、性别、年龄 课程:课程号、课程名 上述实体中存在如下联系: (1)一个班主任管理一个班级,一…

字节跳动五面都过了,结果被刷了,问了hr原因竟说是...

摘要 说在前面,面试时最好不要虚报工资。本来字节跳动是很想去的,几轮面试也通过了,最后没offer,自己只想到几个原因:1、虚报工资,比实际高30%;2、有更好的人选,这个可能性不大&…

分布式事务

一、为什么需要分布式事务: 分布式事务是指 会涉及到操作多个数据库(服务)的事务。 其实就是将对 同一数据库(服务)事务的概念扩大到了多个数据库(服务)的事务。 目的是为了保证分布式系统中的数据一致性。 二、分布式事务XA规范…

RHCE第五次作业

1.总结变量的类型及含义? 2.实现课堂案例计算长方形面积?(6种方式) 3.定义变量urlhttps://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现) 1)截取网站访问的协议 …

如何在华为OD机试中获得满分?Java实现【字母组合】一文详解

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 每个数字对应多个字母,…

2023年,真的别裸辞....

作为IT行业的大热岗位——软件测试,只要你付出了,就会有回报。说它作为IT热门岗位之一是完全不虚的。可能很多人回说软件测试是吃青春饭的,但放眼望去,哪个工作不是这样的呢?会有哪家公司愿意养一些闲人呢?…

node.js PM2部署项目

文章更新 2023-05-21 更新NSSM安装服务的方式 pm2 是什么 pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序。通常一般会在服务上线的时候使用 pm2 进行管理。本文围绕以下重点进行讲解:安装pm2;命令行部署到PM2;PM2查看日志等命…

PLX31-EIP-MBTCP 以太网/IP到Modbus TCP/IP

PLX31-EIP-MBTCP ProSoft Technology的EtherNet/IP to Modbus TCP/IP通信网关允许在支持EtherNet/IP的控制器或设备与Modbus TCP/IP控制器或设备之间进行高速双向数据传输。 我们的Modbus TCP/IP驱动程序具有多种客户端和服务器功能,可实现更快的数据传输。此外&a…

【Linux】普通用户无法使用sudo指令的方法

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】…

云计算安全

前言 什么是云计算? 云计算就是一种新兴的计算资源利用方式,云计算的服务商通过对硬件资源的虚拟化,将基础IT资源变成了可以自由调度的资源池,从而实现IT资源的按需分配,向客户提供按使用付费的云计算服务。用户可以…

智能排班系统 【管理系统功能、操作说明——中篇】

文章目录 页面与功能展示企业管理角色管理用户管理系统管理员身份使用企业管理员身份使用门店管理员身份使用 门店管理职位管理排班规则设置节日管理消息管理 页面与功能展示 企业管理 企业管理页面如图 34所示,在企业管理页面,系统管理员可以查询所注…