达梦数据库DM8-索引篇

目录

    • 一、前景
    • 二、名词
    • 三、语法
      • 1、命令方式创建索引
        • 1.1 创建索引空间
        • 1.2.1 创建普通索引并指定索引数据空间
        • 1.2.2 另一种没验证,官方写法
        • 1.3 复合索引
        • 1.4 唯一索引
        • 1.5 位图索引
        • 1.6 函数索引
      • 2、创建表时候创建索引
      • 3、可视化方式创建索引
        • 3.1 打开DM管理工具
        • 3.2 找到要创建索引的表,右击选择创建索引
        • 3.3. 选择规则及字段
        • 3.4. 选择数据储存位置
        • 3.5. 完成||验证
    • 四、示例
      • 1、创建一个索引表空间名为ind_student
      • 2、根据user_name, user_sex创建复合索引
      • 3、根据phone创建唯一索引

一、前景

 数据库索引是为了提高查询速度而对表字段附加的一种标识。简单来说,索引其实是一种数据结构。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
 首先我们需要明白为什么索引会提高查询速度,数据库在执行一条SQL语句的时候,默认扫描方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以数据库索引能明显提高查询的速度。

下面列举几种适合建立索引的情况:

  1. 经常在where条件中作为查询条件的字段可以建立索引;
  2. 外键关联列可以建立索引;
  3. order by排序后面的字段可以建立索引;
  4. group by分组后的字段可以建立索引;

二、名词

  1. CREATE 创建标识
  2. OR REPLACE INDEX 后跟指定索引名称(模式+索引名)
  3. ON on后跟操作的表,及创建的字段
  4. STORAGE 指定表空间关键字
  5. UNIQUE 唯一索引
  6. INDEX 普通索引

三、语法

1、命令方式创建索引

1.1 创建索引空间
create tablespace ind_tbs datafile '****/ind_**.dbf' size 32 autoextend on next 10 maxsize 2000;
1.2.1 创建普通索引并指定索引数据空间
create index ind_name on TEST.student(user_name) tablespace ind_tbs;
1.2.2 另一种没验证,官方写法
CREATE OR REPLACE INDEX "TEST"."index_p_b_c" ON "TEST"."student" ( "user_name" ASC, "user_sex" ASC) STORAGE ( ON "ind_tbs", CLUSTERBTR );
1.3 复合索引
create index ind_name_sex on TEST.student(user_name,user_sex) tablespace ind_tbs;
1.4 唯一索引
create unique index ind_phone on TEST.student(phone);
1.5 位图索引
1.6 函数索引

2、创建表时候创建索引

-- 创建表空间
create tablespace "student" datafile '***/student.DBF' size 32 autoextend on maxsize 16777215 CACHE = NORMAL;
-- 也可以创建一个索引空间分开存放(这里就把索引数据和数据放在一起了)
CREATE TABLE "TEST"."student"
("id" BIGINT NOT NULL,"user_name" VARCHAR(16) NOT NULL,"user_sex" INTEGER NOT NULL,"phone" VARCHAR NOT(11) NULL,"create_by" BIGINT DEFAULT 0 NOT NULL,"create_time" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,"update_by" BIGINT DEFAULT 0 NOT NULL,"update_time" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP() NOT NULL,NOT CLUSTER PRIMARY KEY("id"),  -- 默认主键就是唯一索引UNIQUE("phone") -- 创建手机号字段为唯一索引
) STORAGE(ON "student", CLUSTERBTR) ;COMMENT ON TABLE "TEST"."student" IS '成本拆分记录';
COMMENT ON COLUMN "TEST"."student"."id" IS '主键';
COMMENT ON COLUMN "TEST"."student"."user_name" IS '姓名';
COMMENT ON COLUMN "TEST"."student"."user_sex" IS '性别';
COMMENT ON COLUMN "TEST"."student"."phone" IS '手机号';
COMMENT ON COLUMN "TEST"."student"."create_by" IS '创建人id';
COMMENT ON COLUMN "TEST"."student"."create_time" IS '创建时间';
COMMENT ON COLUMN "TEST"."student"."update_by" IS '修改人id';
COMMENT ON COLUMN "TEST"."student"."update_time" IS '修改时间';-- 创建复合索引
CREATE OR REPLACE  INDEX "TEST"."index_phone" ON "TEST"."student"("user_name" ASC,"user_sex" ASC) STORAGE(ON "student", CLUSTERBTR) ;

3、可视化方式创建索引

3.1 打开DM管理工具

在这里插入图片描述

3.2 找到要创建索引的表,右击选择创建索引

在这里插入图片描述

3.3. 选择规则及字段

在这里插入图片描述

3.4. 选择数据储存位置

在这里插入图片描述

3.5. 完成||验证

在这里插入图片描述

四、示例

一张student表,含有id,user_name, user_sex,phone …字段
** 以下操作示例:

  • – TEST 为模式
  • – student 为表名称

1、创建一个索引表空间名为ind_student

create tablespace ind_student datafile '****/ind_student.dbf' size 32 autoextend on next 10 maxsize 2000;

2、根据user_name, user_sex创建复合索引

create index ind_name_sex on TEST.student(user_name,user_sex) tablespace ind_student;

3、根据phone创建唯一索引

create unique index ind_phone on TEST.student(phone);

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生成式人工智能落地校园与课堂的15个场景

生成式人工智能正在重塑教育行业,为传统教学模式带来了革命性的变化。随着AI的不断演进,更多令人兴奋的应用场景将逐一显现,为学生提供更加丰富和多元的学习体验。 尽管AI在教学中的应用越来越广泛,但教师们也不必担心会被完全替代…

[电机控制]-三相鼠笼电机simulink建模

三相鼠笼电机simulink建模 1 方程 电机方程: d i s α d t K 1 i s α K 2 ϕ r α K 3 ω r ϕ r β K 4 v s α \frac{di_{s\alpha}}{dt}K_{1}i_{s\alpha}K_{2}\phi_{r\alpha}K_{3}\omega_{r}\phi_{r\beta}K_{4}v_{s\alpha} dtdisα​​K1​isα​K2​ϕrα…

VSCODE 下 openocd Jlink 的配置笔记

title: VSCODE 下 openocd Jlink 的配置笔记 tags: STM32HalCubemax 文章目录 内容VSCODE 下 openocd Jlink 的配置笔记安装完成后修改jlink的配置文件然后修改你的下载器为jlink烧录你的项目绝对会出现下面的问题那么打开下载的第一个软件 (点到这个jlink右键&…

视频分帧【截取图片】(YOLO目标检测【生成数据集】)

高效率制作数据集【按这个流程走,速度很顶】 本次制作,1059张图片【马路上流动车辆】 几乎就是全自动了,只要视频拍得好,YOLO辅助制作数据集就效率极高 视频中的图片抽取: 【由于视频内存过大,遇到报错执行…

IO半虚拟化-vhost学习笔记

参考:系《深入浅出dpdk》学习笔记以及redhat的官方博客 vhost属于virtio-net网络设备的后端驱动,经历了从virtio-net后端,到内核态vhost-net,到vhost-user的演进过程。先过一下背景知识, 背景知识 QEMU QEMU 是一个…

几种常用排序算法

1 基本概念 排序是处理数据的一种最常见的操作,所谓排序就是将数据按某字段规律排列,所谓的字段就是数据节点的其中一个属性。比如一个班级的学生,其字段就有学号、姓名、班级、分数等等,我们既可以针对学号排序,也可…

huawei USG6001v1学习---防火墙高可靠性(双机热备)

1.什么是双机热备 如图:当左图的防火墙发生故障时,整个系统都会收到影响,而右图即使有防火墙发生故障,但是还有一台防火墙做备份,相对于只有一台防火墙,要可靠些。 由于防火墙上不仅需要同步配置信息&…

【Linux】—— 进程的基本概念、PCB、fork

🌏博客主页:PH_modest的博客主页 🚩当前专栏:Linux跬步积累 💌其他专栏: 🔴 每日一题 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮&#xff0…

【海外云手机】静态住宅IP集成解决方案

航海大背景下,企业和个人用户对于网络隐私、稳定性以及跨国业务的需求日益增加。静态住宅IP与海外云手机的结合,提供了一种创新的集成解决方案,能够有效应对这些需求。 本篇文章分为三个部分;静态住宅优势、云手机优势、集成解决…

Spring框架、03SpringMVC

SpringMVC SpringMVC入门 介绍 SpringMVC将Servlet一些通用功能进行了抽取和封装,使用它之后,代码主要有两部分组成: 前端控制器:由SpringMVC提供,主要负责接收参数和返回数据 处理器:由程序员编写&…

好用的接口文档swagger

本篇文章记录怎么给我们的后端项目整一个好用的接口文档 这个东西好像叫什么swagger吧 1. 依赖引入&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId></dependency>…

AWE2025正式启动,AWE×AI 推动智慧生活的普及

7月18日&#xff0c;2025年中国家电及消费电子博览会&#xff08;AWE2025&#xff09;正式启动。主办方宣布&#xff0c;AWE2025的主题为“AI科技、AI生活”&#xff0c;展会将于2025年3月20-23日在上海新国际博览中心举办。 作为全球三大家电和消费电子领域展会之一&#xff…

图书馆定位导航:RFID、VR与AR技术在图书馆中的应用

图书馆作为知识的宝库&#xff0c;承载着无数求知者的梦想与期待&#xff0c;随着馆藏书籍数量的激增与图书馆布局的日益复杂&#xff0c;读者在寻找目标书籍往往有许多困难。传统的索引号查询方式虽能提供书籍的基本信息&#xff0c;但在寻找过程中&#xff0c;因不熟悉图书馆…

各种复现,保证质量

代码复现&#xff0c;文献复现&#xff0c;模型复现&#xff0c;算法复现&#xff0c;文章复现&#xff0c;创新点等等&#xff0c;python/matlab/c语言/r语言均可&#xff0c;保证高质量完成&#xff0c;可接急单&#xff0c;不成功不收费&#xff01;

Apache Bigtop 正式支持 openEuler,共创大数据新生态

近日&#xff0c;在OpenAtom openEuler&#xff08;简称"openEuler"&#xff09;BigData SIG与Linaro的携手努力下&#xff0c;** Apache Bigtop于2024年7月8日发布的3.3.0新版本中&#xff0c;正式宣告了对openEuler操作系统的原生支持**。这一里程碑式的进展&#…

人话讲下如何用github actions编译flutter应用-以编译windows为例

actions的脚本看下这个&#xff0c;有简单的说明&#xff0c;有关于编译个平台的脚本&#xff1a; https://github.com/marketplace/actions/flutter-action 打开你要编译的项目点击那个Actions按钮 然后随便点击一个脚本会跳到白框编辑界面 打开上文提到的网址随便抄下就ok …

前端-04-VScode敲击键盘有键入音效,怎么关闭

目录 问题解决办法 问题 今天正在VScode敲项目&#xff0c;不知道是按了什么快捷键还是什么的&#xff0c;敲击键盘有声音&#xff0c;超级烦人啊&#xff01;&#xff01;于是我上网查了一下&#xff0c;应该是开启了VScode的键入音效&#xff0c;下面是关闭键入音效的办法。…

Go语言并发编程-Goroutine调度

goroutine 概念 在Go中&#xff0c;每个并发执行的单元称为goroutine。通常称为Go协程。 go 关键字启动goroutine go中使用关键字 go 即可启动新的goroutine。 示例代码&#xff1a; 两个函数分别输出奇数和偶数。采用常规调用顺序执行&#xff0c;和采用go并发调用&…

Win10环境将Docker部署到非系统盘

Win10环境将Docker部署到非系统盘 目录 Win10环境将Docker部署到非系统盘 一、Docker官网客户端Docker Hub下载 二、windows环境的安装 三、正确的迁移步骤 3.1、确保你的系统分区至少3G的剩余空间&#xff1b; 3.2、默认方式安装Docker hub&#xff1b; 3.3、打开Dock…

HTML开发笔记:1.环境、标签和属性、CSS语法

一、环境与新建 在VSCODE里&#xff0c;加载插件&#xff1a;“open in browser” 然后新建一个文件夹&#xff0c;再在VSCODE中打开该文件夹&#xff0c;在右上角图标新建文档&#xff0c;一定要是加.html&#xff0c;不要忘了文件后缀 复制任意一个代码比如&#xff1a; <…