索引-定义、创建(CREATE INDEX)、删除(DROP INDEX)

一、概述

1、索引是SQL语言定义的一种数据对象,是大多数DBMS为数据库中基本表创建的一种辅助存取结构,用于响应特定查询条件进行查询时的查询速度,DBMS根据查询条件从数据库文件中,选择出一条或者多条数据记录以供检索,当多个数据记录均满足某一查询条件时,按数据记录的物理顺序,第一条记录最先被找到,并将其指定为当前记录,以后的查找操作就从这条记录开始,再定位满足条件的下一条记录,当查询只涉及数据库文件中少量数据记录时,如果磁盘上所有数据记录逐一读取检查,效率低下,最好系统能够直接定位那些满足查询条件的数据记录,这就是创建索引的目的

二、索引的概念

索引是建立在关系的某一属性(组)上的一种数据结构,针对某个属性建立索引,就是根据此属性值将记录进行逻辑排序

三、索引的作用

索引提供了在改属性(组)上快速查找具有某个特定值的元组的方法

1、索引文件所占磁盘空间通常比数据库文件所在磁盘空间要少

2、索引记录是有序的,可以使用二分查找法来查找索引键值所在记录

四、索引的分类

1、聚集索引(主索引):数据文件中数据记录的物理顺序与索引记录的排列顺序在索引键上保持一致,只能有一个

2、非聚集索引(次索引/辅助索引):数据库文件中数据记录不按索引键值物理排序,可以有多个

五、索引的创建

方式一:创建基本表的同时创建索引

CREATE TABLE <表名>

(<属性列名1> <数据类型> 【列级完整性约束条件】

【,<属性列名2><数据类型> 【列级完整性约束条件】,...】

【,<表级完整性约束条件>】

)

PRIMARY KEY 【CLUSTERED|NONCLUSTERED

PRIMARY KEY 【CLUSTERED|NONCLUSTERED】(<列名组>)

1、一般DBMS默认基于表定义的主键创建聚集索引,使得所创建的表的数据文件是一个顺序文件

2、举例1:创建一个与表s逻辑结构相同的表的表s2的同时创建聚集索引

create table s2(sNo char(12) primary key clustered,sN varchar(6) not null,sex char(2) default'男',sB Date,sD varchar(16),check(sex in('男','女'))
);

3、举例2:创建表s3的同时创建非聚集索引

create table s3(sNo char(12) ,sN varchar(3) not null,sex char(1) default'男',sB Date,sD varchar(8),check(sex in('男','女')),primary key nonclustered (sNo)
);

方式二:单独创建索引

CREATE 【UNIQUE】【CLUSTEREDINDEX <索引名>

ON <表名> (<属性列名1>【<次序>】【,<属性列名2>【次序】,...】)

其他参数

1、注:

(1)UNIQUE:索引键值唯一,即创建的索引中不包含索引键值相同的索引项

(2)CLUSTERED:聚集索引,在默认情况下,CREATE INDEX语句创建的是非聚集索引

(3)<表名>:创建索引的表

(4)<属性列名1>:索引键 

(5)<次序>:每个属性列名后面可以用次序来指定索引键值的排列顺序,可选ASC(升序)或DESC(降序),默认是ASC

(6)其他参数:是与索引文件物理存储相关的因素,可以不指定,由DBMS决定

2、举例1:在基本表s3上创建基于出生日期的聚集索引

create clustered index sY5
on s3(sB desc);

将表s中的元组全部复制到表s3中,则会发现,表s3中的元组都是按照索引键值降序排列的

3、举例2:在基本表s2上创建基于姓名的唯一键值索引

create unique index sY1
on s2(sN)

4、举例3:在基本表s2上创建基于出生日期的非聚集索引

create index sY2
on s2(sB)

创建索引后,相应的索引描述存储到数据字典中,当不在需要索引时应及时删除,避免系统为维护索引降低系统操作性能

六、索引的删除

1、删除索引的语句格式

DROP INDEX <索引名> ON <表名>

或    DROP INDEX <表名> .<索引名>

2、举例1:删除基本表s2中的索引sY4

drop index sY2 on s2

七、索引的创建原则

1、表中数据较少时一般不需要创建索引

2、数据库主要用于查询时,可根据需要多创建一些索引

3、数据库处于频繁更新时,不宜创建过多的索引

4、最好在创建任何非聚集索引之前创建聚集索引

5、索引键一般是经常出现在查询条件中的属性,一般基于主键和外键创建索引

6、在频繁更新的属性上尽量不创建聚集索引,一般在主键上创建聚集索引

7、可基于经常用于统计查询的属性创建索引

八、总结

1、索引是DBMS中常用的快速存取磁盘上数据库中数据的存取方法

2、索引由数据库管理员或者数据库拥有者管理,由DBMS动态维护

3、DBMS利用索引对查询进行优化处理实现高效查询

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

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

相关文章

带你学习Mybatis之Sql绑定

Sql绑定 在mybatis中定义一个接口&#xff0c;然后在mapper.xml文件中编写一个sql语句&#xff0c;在执行该接口中方法的时候就会执行该sql语句&#xff0c;这是怎么做到的呢&#xff1f; public interface UserMapper{ public User getUser(int i);// 在mapper.xml中写一个&l…

springboot优雅shutdown时异步线程安全优化

前面针对graceful shutdown写了两篇文章 第一篇&#xff1a; https://blog.csdn.net/chenshm/article/details/139640775 只考虑了阻塞线程&#xff0c;没有考虑异步线程 第二篇&#xff1a; https://blog.csdn.net/chenshm/article/details/139702105 第二篇考虑了多线程的安全…

基于C#开发web网页管理系统模板流程-参数传递

点击返回目录-> 基于C#开发web网页管理系统模板流程-总集篇-CSDN博客 前言 当用户长时间未在管理系统界面进行操作&#xff0c;或者用户密码进行了更改&#xff0c;显然用户必须重新登录以验证身份&#xff0c;如何实现这个功能呢&#xff1f; HTTP Cookie&#xff08;也叫 …

2024前端面试准备6-TS基础

1.TS基础类型有哪些&#xff1f;any void unknown never的区别&#xff1f; any 、Number、String、Boolean、Array 、元组、枚举、void、undefined、null、never any: 可以赋予任意类型的值&#xff0c;不进行类型检查&#xff0c;尽量不要用any void: 表示函数没有返回值 …

【Linux】 进程信号的发生

送给大家一句话&#xff1a; 何必向不值得的人证明什么&#xff0c;生活得更好&#xff0c;乃是为你自己。 -- 亦舒 进程信号的发生 1 何为信号2 信号概念的基础储备3 信号产生kill系统调用alarm系统调用异常core term Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢…

【教程】设置GPU与CPU的核绑(亲和力Affinity)

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 简单来说&#xff0c;核绑&#xff0c;或者叫亲和力&#xff0c;就是将某个GPU与指定CPU核心进行绑定&#xff0c;从而尽可能提高效率。 推荐与进程优先…

1055 集体照(测试点3, 4, 5)

solution 从后排开始输出&#xff0c;可以先把所有的学生进行排序&#xff08;身高降序&#xff0c;名字升序&#xff09;&#xff0c;再按照每排的人数找到中间位置依次左右各一个进行排列测试点3&#xff0c; 4&#xff0c; 5&#xff1a;k是小于10的正整数&#xff0c;则每…

SQL RIGHT JOIN 详解

SQL RIGHT JOIN 详解 引言 在SQL数据库查询中,JOIN操作用于结合两个或多个表中有关联的行。RIGHT JOIN是一种特殊的JOIN类型,它基于两个表之间的关联,从右表(即RIGHT JOIN后面的表)中返回所有行,即使在左表中没有匹配的行。如果左表中有匹配的行,则RIGHT JOIN还会从左…

线程池ThreadPoolExecutor源码分析

一、线程池基本概念和线程池前置知识 1.1 Java中创建线程的方式有哪些 传统答案&#xff1a; 继承Thread类 通过继承Thread类并重写其run方法来创建线程。具体步骤包括定义Thread类的子类&#xff0c;在子类中重写run方法以实现线程的具体逻辑&#xff0c;然后创建子类的实例…

Unity的三种Update方法

1、FixedUpdate 物理作用——处理物理引擎相关的计算和刚体的移动 (1) 调用时机&#xff1a;在固定的时间间隔内&#xff0c;而不是每一帧被调用 (2) 作用&#xff1a;用于处理物理引擎的计算&#xff0c;例如刚体的移动和碰撞检测 (3) 特点&#xff1a;能更准确地处理物理…

【C/C++】实参与形参的区别

在编程中&#xff0c;形参&#xff08;形式参数&#xff09;和实参&#xff08;实际参数&#xff09;是函数调用中的两个基本概念&#xff0c;它们在函数定义和函数调用中扮演着不同的角色。 形参&#xff08;Formal Parameters&#xff09;&#xff1a; 形参是在函数定义时声明…

植物大战僵尸杂交版全新版v2.1解决全屏问题

文章目录 &#x1f68b;一、植物大战僵尸杂交版❤️1. 游戏介绍&#x1f4a5;2. 如何下载《植物大战僵尸杂交版》 &#x1f680;二、解决最新2.1版的全屏问题&#x1f308;三、画质增强以及减少闪退 &#x1f68b;一、植物大战僵尸杂交版 《植物大战僵尸杂交版》是一款在原版《…

Es 索引查询排序分析

文章目录 概要一、Es数据存储1.1、_source1.2、stored fields 二、Doc values2.1、FieldCache2.2、DocValues 三、Fielddata四、Index sorting五、小结六、参考 概要 倒排索引 优势在于快速的查找到包含特定关键词的所有文档&#xff0c;但是排序&#xff0c;过滤、聚合等操作…

内存分配器性能优化

背景 在之前我们提到采用自定义的内存分配器来解决防止频繁 make 导致的 gc 问题。gc 问题本质上是 CPU 消耗&#xff0c;而内存分配器本身如果产生了大量的 CPU 消耗那就得不偿失。经过测试初代内存分配器实现过于简单&#xff0c;产生了很多 CPU 消耗&#xff0c;因此必须优…

[Day 11] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈中的加密技術 介紹 區塊鏈技術被認為是現代信息技術的重大突破之一&#xff0c;其應用範圍從加密貨幣到供應鏈管理、醫療健康等各個領域。加密技術在區塊鏈中扮演著至關重要的角色&#xff0c;確保了數據的安全性、完整性和不可篡改性。本文將深入探討區塊鏈中的加密技…

重装系统,以及设置 深度 学习环境

因为联想y7000在ubantu系统上连不到wifi,所以打算弄双系统 第一步&#xff1a;下载win10镜像&#xff0c;之后在系统用gparted新建个分区&#xff0c;格式化成ntfs&#xff0c;用来装win10系统 第二步&#xff0c;制作win10启动盘&#xff0c;这个需要先把u盘用disks格式化&a…

跨语言翻译的突破:使用强化学习与人类反馈提升机器翻译质量

在人工智能领域&#xff0c;知识问答系统的性能优化一直是研究者们关注的焦点。现有的系统通常面临知识更新频繁、检索成本高、以及用户提问多样性等挑战。尽管采用了如RAG&#xff08;Retrieval-Augmented Generation&#xff09;和微调等技术&#xff0c;但它们各有利弊&…

C++ 45 之 赋值运算符的重载

#include <iostream> #include <string> #include <cstring> using namespace std;class Students05{ public:int m_age;char* m_name;Students05(){}Students05(const char* name,int age){// 申请堆空间保存m_name;this->m_name new char[strlen(name)…

案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序

案例 Cacheable 是 Spring Framework 提供的一个注解&#xff0c;用于在方法执行前先检查缓存&#xff0c;如果缓存中已存在对应的值&#xff0c;则直接返回缓存中的值&#xff0c;而不执行该方法体。如果缓存中不存在对应的值&#xff0c;则执行方法体&#xff0c;并将方法的…

免费下载全球逐日气象站点数据

环境气象数据服务平台近期升级了NOAA GSOD 全球逐日气象站点数据&#xff08;NOAA Global Surface Summary of the Day &#xff09;的检索方式&#xff0c;升级后&#xff0c;用户无需注册&#xff0c;即可以在平台上下载全球逐日气象站点数据。 检索方式&#xff1a; 1. 访…