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

2024-06-16 19:44

本文主要是介绍索引-定义、创建(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利用索引对查询进行优化处理实现高效查询

这篇关于索引-定义、创建(CREATE INDEX)、删除(DROP INDEX)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067373

相关文章

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal