达梦数据库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.mzph.cn/news/873334.shtml

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

相关文章

GitHub私有派生仓库(fork仓库) | 派生仓库改为私有

GitHub私有派生仓库 前言解决方案 前言 在GitHub上Fork的派生仓库默认为公有仓库,且无法修改为私有仓库。 若想创建私有的派生仓库,可通过GitHub的导入仓库功能实现,具体步骤请参见下文解决方案。 解决方案 打开GitHub页面,在个…

嵌入式物联网在医疗行业中的应用——案例分析

作者主页: 知孤云出岫 目录 嵌入式物联网在医疗行业中的应用——案例分析引言1. 智能病房监控1.1 实时患者监控系统 2. 智能医疗设备管理2.1 设备使用跟踪与维护 3. 智能药物管理3.1 药物分配与跟踪 4. 智能远程医疗4.1 远程患者监控与诊断 总结 嵌入式物联网在医疗行业中的应…

基于深度学习的数据增强

基于深度学习的数据增强技术旨在通过生成或变换现有数据,来提高模型的泛化能力和鲁棒性。数据增强在图像、文本、语音等各种类型的数据处理中都起着至关重要的作用。以下是对这一领域的系统介绍: 1. 任务和目标 数据增强的主要任务和目标包括&#xff…

后端开发: 如何去使用公共组件

在日常编写接口的途中,使用公共组件是必不可少的事情,在编写产品导入和导出的接口开发时,被组长告知,需要使用公共组件去编写这2个接口,随后就发给我公共组件项目地址。 接下来我先介绍公共组件: 什么是公…

Keka for Mac v1.4.3 中文下载 解压/压缩工具

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试1、打开软件2、文件访问权限修改3、访达扩展 安装完成!&#xff…

LNMP环境配置问题整理

首先是一键安装直接报错: 换教程:搭建LNMP,步骤最详细,附源码,学不会打我-CSDN博客 mysql安装成功之后: MySQL 启动报错:Job for mysqld.service failed because the control process exited …

前端开发_注意事项

无论使用哪种框架开发(vue、react、...),前端开发终究是结构(HTML)、样式(CSS)、逻辑(用户操作数据处理对接后端API)。那么开发过程中都需要注意哪些事项,本文…

设计模式:使用最广泛的代理模式

需求场景 按着惯例,还是以一个应用场景作为代理模式的切入点。现在有一个订单系统,要求是:一旦订单被创建,只有订单的创建人才可以修改订单中的数据,其他人则不能修改。 基本实现思路 按着最直白的思路,就是查询数据…

IDEA中内敛局部变量对话窗是什么?

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

mmaction输出tensorboard日志

参考文档: 从 MMAction2 0.x 迁移 — MMAction2 1.2.0 文档 修改mmaction2/configs/_base_/default_runtime.py,将代码: vis_backends [dict(typeLocalVisBackend)]改为: vis_backends [dict(typeLocalVisBackend), dict(ty…

juicefs 一致性

1. 多客户端并发读写一致性 并发写场景 对于同一个chunk不可机器client的并发写,后写的会覆盖之前写的;元数据更新是事务更新,数据更新是写时复制(不覆盖) 对于跨chunk的不同机器client的并发写,juicefs本身…

华为OD机试D卷 --快速人名查找--24年OD统一考试(Java JS Python C C++)

文章目录 题目描述输入描述输出描述用例题目解析java源码js源码python源码c源码c++源码题目描述 给一个字符串,表示用’,’分开的人名。 然后给定一个字符串,进行快速人名查找,符合要求的输出。 快速人名查找要求︰人名的每个单词的连续前几位能组成给定字符串,一定要用…

sip对话(dialog)、sip会话(session)、sip call-leg的区别和联系

一.sip对话和sip会话的区别和联系 1. 区别 1)定义和范围: 对话(Dialog):对话是指两个SIP用户代理(User Agent,UA)之间通过SIP消息交换建立的端到端的SIP关系。这种关系…

Kotlin实现SHA-256哈希和RSA签名

1. 对一段原始字符串,实现SHA 哈希签名,即hashMessage; 2. 用私钥key 对SHA后的字符串信息签名,即signatureMessage; 3. 用公钥key验证私钥签名的信息(私钥签名的原始字符串是SHA-256哈希的字符串&#x…

GitHub介绍

GitHub 是一个基于 Git 的在线代码托管平台,用于版本控制和协作。下面是一些常用的 Git 命令,这些命令可以帮助你在本地和 GitHub 之间管理和同步代码仓库: 初始化和配置 初始化本地仓库 git init这将在当前目录下创建一个新的 Git 仓库。 …

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器

Debezium日常分享系列之:Debezium2.7版本PostgreSQL数据库连接器 一、概述二、连接器的工作原理安全快照初始快照的默认工作流程行为临时快照触发临时增量快照触发临时阻塞快照增量快照增量快照流程Debezium 如何解决具有相同主键的记录之间的冲突快照窗口触发增量快照具有附加…

FPGA文档阅读

FPGA的文档没有相应的基础还真不容易看懂,下面是B站上对FPGA文档的解读(本文非对文档解读,只是为个人记录第三期:CycloneIV E最小系统板设计(一)从Datasheet上获取FPGA的基本参数_哔哩哔哩_bilibili 电源部份 核心电…

算法力扣刷题记录 五十二【617.合并二叉树】

前言 二叉树篇,继续。 记录 五十二【617.合并二叉树】 一、题目阅读 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要…

C语言 杂项笔记

这一篇需要修改 todo C语言知识点 在函数中, 传入一个字符串: 使用字符数组: void getLength(char name[])使用指针: void getLen(char *name) 一个中文字符, 在UTF-8编码中占用3个字节 sizeof() 是一运算符, 返回的单位是字节 sleep(1);…

19-2 LLM之野望 2 - LLM给到Quora面临的困境

Quora 有一个简单的前提:它是一个分享知识和专业知识的地方,好奇的人可以就任何可以想象到的话题提出问题,并从平台博学的社区获得深思熟虑的、见识广博的答案。 想想雅虎答案 (Yahoo Answers),它适用于技术员工和格拉德威尔式的…