数据库之索引

1. 索引的定义

索引是一个排序的列表,包含索引字段的值和其对应的行记录的数据所在的物理地址。

索引的作用: 加快表的查询速度,还可以对字段排序。

2. 索引的工作方式

有了索引后,要根据条件查询某行数据时,需要先扫描全表,再定位某行数据的位置。有了索引之后,会先通过查询条件的字段值找到其索引对应的行记录数据的物理地址。然后根据物理地址访问相应的行记录的数据,就像根据书目录的页码快速找到所需的内容。

副作用:会额外占用磁盘空间,更新包含索引的表会花费更多的时间(效率会变慢)。

3. 创建索引的依据

1)表中的记录行数较多时,一般超过300行的表建议要有索引。

2)  建议在表中的主键字段,外键字段,多表连接使用的公共关键字段、唯一性较好的字段、不经常更新的字段,经常出现在where、group by、order by子语句的字段,小文本字段上面创建索引。

3)不建议在唯一性较差的字段,更新太频繁的字段,大文本字段上面创建索引。

4. 索引的类型

普通索引

唯一索引

主键索引

组合索引

全文索引

5. 索引的增删查

##添加普通索引的方法
create index 索引名称 on 表名 (字段名);alter table 表名 add index 索引名称 (字段);还可以在创建表格时候就添加,但是不建议使用
create table 表名(字段1 数据类型,....index 索引名称 (字段));

唯一索引创建

与普通索引类似,但区别是唯一索引列的每个值都唯一。唯一索引允许有空值(注意和主键不同)。如果是用组合索引创建,则列值的组合必须唯一。添加唯一键将自动创建唯一索引。

create unique index 索引名 on 表名 (字段名);alter table 表名 add unique key (字段名);alter table 表名 add unique 索引名 (字段名);

主键索引创建

是一种特殊的唯一索引,必须指定为“PRIMARY KEY”。一个表只能有一个主键,不允许有空值。 添加主键将自动创建主键索引。

alter table 表名 add primary key (字段名);

组合索引创建

可以是单列上创建的索引,也可以是在多列上创建的索引。需要满足最左原则,因为 select 语句的 where 条件是依次从左往右执行的,所以在使用 select 语句查询时 where 条件使用的字段顺序必须和组合索引中的排序一致,否则索引将不会生效。


create index 索引名称 on 表名 (字段1,字段2...);alter table 表名 add index 索引名称 (字段1,字段2...);

全文索引

适合在进行模糊查询的时候使用,可用于在一篇文章中检索文本信息。


create fulltext index 索引名称 on 表名 (字段);alter table 表名 add fulltext 索引名称  (字段);支持模糊查询   
select .... from 表名 where match(字段) against('单词');

查看索引

show create table 表名
show index from 表名
show keys from 表名

删除索引

drop index 索引名 on 表名;
alter table 表名 drop index 索引名;
alter table 表名 drop primary key;

6. 遇到select 语句查询速度慢怎么办

1. 先使用explain分析select语句,看key字段,确定select 语句是否使用索引或索引是否使用正确。

2. 再根据select语句中where子语句使用的条件字段创建相应的单列索引或组合索引,组合索引要满足最左原则。

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

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

相关文章

uniapp中的uview组件库丰富的Form 表单用法

目录 基本使用 #Form-item组件说明 #验证规则 #验证规则属性 #uView自带验证规则 #综合实战 #校验错误提示方式 #校验 基本使用 此组件一般是用于表单验证使用,每一个表单域由一个u-form-item组成,表单域中可以放置u-input、u-checkbox、u-radio…

云原生十二问

一、什么是云原生? 云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代企业希望构建高度可扩展、灵活且具有弹性的应用程序,可以快速更新以满足客户需求。为此,他们使用现代工具和技术,这些工具和技术本质上支…

RabbitMQ基础知识

一.什么是RabbitMQ RabbitMQ是一个开源的、高性能的消息队列系统,用于在应用程序之间实现异步通信。它实现了AMQP(Advanced Message Queuing Protocol)协议,可以在分布式系统中传递和存储消息。 消息队列是一种将消息发送者和接收…

NE555学习笔记-2024

实物图片 NE555引脚图 内部时序图 示列1,红外接收电路 红外接收电路的工作原理:在上述电路中,TSOP1738构成了该电路的主要组成部分,旨在检测来自任何来源的红外信号。这用于检测38 KHz范围的信号,因此命名为“TSOP173…

aps审核-模电英文稿

模拟电子线路 Analog circuit 需要熟悉课程名,一句话简单概括课程内容,准备一些重点内容介绍。 This course mainly introduces the properties(n.性质) of semiconductors(半导体) and transistors, and then analyzes and masters amplification circ…

利用Spring Cloud和Java系统设置优化工程项目管理系统源码的二次开发体验

工程项目管理涉及众多环节和角色,如何实现高效协同和信息共享是关键。本文将介绍一个采用先进技术框架的Java版工程项目管理系统,该系统支持前后端分离,功能全面,可满足不同角色的需求。从项目进度图表到施工地图,再到…

Element-ui自定义input框非空校验

1、vue自定义非空指令: main.js中自定义非空指令 当input框或下拉框中数据更新时,触发校验 Vue.directive(isEmpty,{update:function(el,binding,vnode){if(vnode.componentInstance.value""){el.classList.add("is-required");}e…

C#中汉字转区位码

目录 一、关于区位码 1.区位码定义 2.算法 二、实例 三、生成效果 四、程序中的知识点 1.byte[] GetBytes(string s) 2.字节数组转short类型 一、关于区位码 1.区位码定义 区位码是一个4位的十进制数,每个区位码都对应着一个唯一的汉字,区位码…

大文件断点下载Range下载zip包显示文件损坏

问题:大文件下载,其它格式的文件及rar格式的压缩包正常下载但是 之后zip包下载后解压失败 原因分析: 1. 查看上传文件的属性值 如图,10.4kb是已经约去小数点的值,准确的大小应该是10663字节10.4130859375KB,所以用10.…

基于ssm的剧本杀预约系统+vue论文

摘 要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于剧本杀预…

git使用(完整流程)

1. 新建仓库 1.右击 git bash 后 输入 git init (仓库为:当前目录) git init name (仓库为:name文件夹) git clone https://github.com/Winnie996/calculate.git //https2.工作区域 工作目录 3. 添加 提交 git add . //工作区添加至暂存区 git commit -m "注释内容&q…

小球自由下落-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第23讲。 小球自由下落&…

基于矩阵乘的CUDA编程优化过程

背景:网上很多关于矩阵乘的编程优化思路,本着看理论分析万遍,不如实际代码写一遍的想法,大概过一下优化思路。 矩阵乘的定义如下,约定矩阵的形状及存储方式为: A[M, K], B[K, N], C[M, N]。 CPU篇 朴素实现方法 按照…

刷算法-- leetcode 96. 不同的二叉搜索树

思路 观察树的组成,可以发现n3时的二叉搜索树可以由,头节点分别为1、2、3时的所有结果组成!定义dp[i]为由i个节点组成的二叉搜索树的个数。确定递推公式,dp[i] 由1为头节点组成的二叉搜索树个数由2为头组成的个数…由i为头节点组…

使用 go-elasticsearch v8 基本请求

使用 go-elasticsearch 请求示例 你可以通过参考Go 官方文档找到简单的示例,所以我认为先看看这个是个好主意。 连接客户端有两种方式,如下图。 至于两者的特点,TypedClient有类型,更容易编写,但文档较少。另外&…

Linux文件的扩展属性 attr cap

文件属性 Linux文件属性分为常规属性与扩展属性,其中扩展属性有两种:attr与xattr. 一般常规的文件属性由stat API 读取,一般是三种权限,ower, group,时间等。 扩展属性attr 用户态API ioctl(fd, FS_IOC32_SETFLAGS…

QQ邮件发送(PHP的Laravel)

1. 开启 QQ 邮箱的 SMTP 支持 2.里面会一个类似于密码之类(复制一下) 3.然后再 .env文件里面配置一下 MAIL_DRIVERsmtp —— 使用支持 ESMTP 的 SMTP 服务器发送邮件; MAIL_HOSTsmtp.qq.com —— QQ 邮箱的 SMTP 服务器地址,必…

OCP NVME SSD规范解读-3.NVMe管理命令-part2

NVMe-AD-8:在某些情况下(如Sanitize命令、Format NVM命令或TCG Revert方法后数据被清除),设备应允许读取已清除的LBAs而不产生错误,并在最后一次清除完成后,对未写入LBAs的读取返回所有零值给主机 NVMe-AD…

什么牌子的护眼灯好用?2024好用护眼台灯分享

不良的光线、长时间的用眼都会给眼睛带来压力,影响视力健康! 本人就是一个因为工作原因需要长时间坐电脑前码字和P图的打工人,对于出现眼睛酸痛、疲劳以及眼球出现红血丝的情况有多难受我是深有体会,在此之前我搜索了好多缓解眼睛…

golang并发编程-channel

在golang 并发编程里,经常会听到一句话:不要通过共享内存进行通信,通过通信来共享内存。下面我们会介绍下channel, 通过源码的方式去了解channel是怎么工作的。 基本结构 流程图 代码解读 type hchan struct {qcount uint // …