数据库索引

目录

索引的概念

索引的作用

索引的副作用

创建索引的原则

适合建索引的场景

索引的创建方式

查看索引

索引的分类

1.普通索引

2.唯一索引

3.主键索引

4.组合索引

5.全文索引

删除索引


索引的概念

索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在的物理位置

使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据,因此能加快数据库的查询速度

索引就好比是一本书的目录,可以根据目录中的页码快速找到所需的内容

索引是表中一列或者若干列值排序的方法

建立索引的目的是加快对表中记录的查找或排序

索引的作用

设置了合适的索引后,数据库利用快速定位技术,能够大大提高查询效率,这也是创建索引的原因

当表内有很庞大的数据或者涉及到多张表后,使用索引可以大大提高查询速度

可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本

通过创建唯一性索引,可以保证数据表中每一行数据的唯一性

可以加快表与表之间的连接

在使用分组和排序时,可以减少分组和排序的时间

索引的副作用

索引本身是需要占用磁盘空间的,在插入和修改数据时要花费更多的时间,因为索引也要随之变动

创建索引的原则

索引本身是能加快查询效率,但也得看具体情况,因为索引本身会消耗系统资源,在有索引的情况下,数据库会先进行索引查询,然后在定位的具体的数据行,如果索引的使用不当,反而会增加数据库的负担

1.表的主键和外键必须有索引。因为主键具有唯一性,外键关联的是子表的主键,查询时能快速定位

2.记录数超过300的表就应该有索引,如果没有索引,需要把表遍历一遍,严重影响数据库的性能

3.经常与其他表进行连接的表,在连接字段上应该建立索引

4.唯一性太差的字段不适合建立索引

5.更新太频繁的字段不适合建立索引

6.经常出现在条件查询的字段,特别是大表的字段,适合建立索引

7.索引应该建立在选择性高的字段上

8.索引应该建立在小字段上,对于哪种超长的字段,不要建索引

适合建索引的场景

1.小字段

2.唯一性强的字段

3.更新不频繁,但查询效率很高的字段

4.表记录超过300+

5.主键,外键,唯一键

索引的创建方式

1.直接创建 2.修改表方式创建3.创建表时指定索引

查看索引

show index from 表名; 

show index from 表名\G; 竖向显示表索引信息

show keys from 表名 ;

show keys from 表名\;

show create table 表名 ;  推荐使用

索引的分类

1.普通索引

最基本的索引,没有唯一性之类的限制

直接创建索引

create index 索引名 on 表名(列名[(length)]);

修改表方式创建索引

alter table 表名 add index 索引名  (列名);

创建表的方式添加索引

create table 表名 (字段,字段2,...., index 索引名 (列名));

2.唯一索引

 与普通索引类似,但要区别的是唯一索引的每一个值都要唯一。

唯一索引允许有空值(注意和主键不同),如果是用组合索引创建,则列值的组合必须唯一。添加唯一键将自动创建唯一索引

直接创建唯一索引

create  unique index 索引名 on 表名(列名);

修改表方式添加唯一索引

alter table 表名 add unique index 索引名 (列名);

创建表时添加索引

create table 表名(字段1,字段2,...., unique index 索引名 (列名));

3.主键索引

主键索引是一种特别的唯一索引,必须指定 primary key   , 一个表内只能有一个主键,不允许有空值,添加主键时会自动创建该索引

创建表时指定主键

create table 表名 (字段1,字段2,... primary key(列名));

修改表方式创建主键

create table 表名 add primary key (列名);

4.组合索引

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

create table 表名 (字段1 ,字段2,字段3,.....  index 索引名(字段1,字段2,字段3));

5.全文索引

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

直接创建

create fulltext index 索引名 on 表名 (列名);

修改表时创建

alter table 表名 add fulltext 索引名 (列名);


删除索引

直接删除索引

drop index 索引名 on 表名;

修改表的方式删除索引

alter table 表名 drop index 索引名;

删除主键索引

alter table 表名 drop primary key;

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

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

相关文章

【Codesys】DINT类型环形计数处理,计数到2的64次方

最近有遇到编码器计数的计数处理,抓取编码器锁存的数值只能在DINT类型范围内,是从-2147483648到2147483647数值,但是现场会有正向多圈的情况。此时需要记录这个数的位置值。就需要记录多圈计数下,圈数的处理。 PROGRAM FB_DintCir…

python闭包详解(实例)

“闭包”这个词语相信大多数学过编程的同学并不陌生,但是有时候理解起来还是有一定难度。 先看定义:闭包是由函数和与其相关的引用环境组合而成的实体。比如参考资源中就有这样的的定义:在实现深约束时,需要创建一个能显式表示引…

外包干了4年,技术退步明显.......

先说一下自己的情况,大专生,19年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

抖音视频批量下载软件可导出视频分享链接|手机网页视频提取|视频爬虫采集工具

解锁抖音视频无水印批量下载新姿势! 在快节奏的生活中,抖音作为时下最热门的短视频平台之一,吸引着广大用户的目光。而如何高效地获取喜欢的视频内容成为了许多人关注的焦点。Q:290615413现在,我们推出的抖音视频批量下载软件&…

c语言——通讯录(文件版)

大家好我是小锋&#xff0c;今天我们来实现一个通讯录 准备工作 为了让我们的代码具有条理我们要建立三个文件一个文件用来放头文件一个文件用来放函数的实现&#xff0c;一个文件用来实现通讯录的基本逻辑。 然后我们其他的.c文件要使用头文件时我们要用# include<tongxu…

【Linux】进程管理

目录 一、进程创建 二、进程等待 1. 阻塞等待 2. 非阻塞等待 3. status位图 三、进程替换 1. exec* 系列函数 2. 高级语言程序替换 一、进程创建 进程是操作系统进程资源分配的最小单位&#xff0c;每一个进程都有自己独立的PID&#xff0c;以及进程控制块PCB。 父进…

【SAP-ABAP】CO01保存时错误DBSQL_DUPLICATE_KEY_ERROR

找到该表的主键OBJNR&#xff0c;事务代码SM56中查看当前缓冲到该key的号码段&#xff0c;事务代码SNRO修改对象名称OBJNR编号范围状态。 事务代码SM13查看数据更新记录

数据可视化-ECharts Html项目实战(5)

在之前的文章中&#xff0c;我们学习了如何设置滚动图例&#xff0c;工具箱设置和插入图片。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢 数据可视化-ECharts…

nodejs社区垃圾分类管理平台的设计与实现python-flask-django-php

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;社区垃圾分类管理平台利用计算机网络实现信息化管理&#xff0c;使整个社区垃圾分类管理的发展和服务水平有显著提升。 语言&#xf…

qt 实现 轮播图效果,且还有 手动 上一页和下一页 已解决

QT中有 轮播图的需求&#xff0c;按照正常html版本 。只需要配置数组就能搞定&#xff0c;但是c qt版本 应该用什么了。 第一想到的是采用定时器。 // 定时器初始化{m_pTime new QTimer(this);m_pTime->start(4 * 1000);//启动定时器并设置播放时间间隔m_pAutoFlag true;/…

vs2019新建Qt工程中双击 .ui 文件无法打开

vs2019 中创建的 Qt 工程&#xff0c;在使用的过程中&#xff0c;经常会有&#xff1a;双击 .ui 文件&#xff0c;闪退的情况&#xff0c;也即 .ui 文件无法打开&#xff01; 针对该问题的详细解决步骤如下&#xff1a; 1、右击该 .ui 文件&#xff0c;选择“打开方式” 2、…

②零基础MySQL数据库-MySQL约束

作用 表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性&#xff0c;比如用户表有些列的值&#xff08;手机号&#xff09;不能为空&#xff0c;有些列的值&#xff08;身份证号&#xff09;不能重复 分类 主键约束(primary key) PK 自增长约束(auto_increme…

是德科技keysight DSOX3024T示波器

181/2461/8938产品概述&#xff1a; DSOX3024T 示波器 要特性与技术指标 使用电容触摸屏进行简洁的触控操作&#xff1a; •提高调试效率 •触控设计可以简化文档记录 •使用起来就像您喜欢的智能手机或平板电脑一样简单 使用 MegaZoom IV 技术揭示偶发异常&#xff1a; •超快…

rpc详解rpc框架

文章目录 概述rpc的优点组件工作流程&RPC的底层原理RPC的底层原理 RPC框架rpc框架优点RPC 的实现基础RPC的应用场景RPC使用了哪些关键技术rpc 调用异常一般怎么处理rpc和http的区别为什么RPC要比HTTP更快一些Dubbo和openfeign 区别远程调用RPC框架传输协议传输速度 概述 在…

135. 分发糖果(力扣LeetCode)

文章目录 135. 分发糖果题目描述贪心算法代码如下 总结 135. 分发糖果 题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩…

my2sql —— go语言版binlog解析及闪回工具

之前学习过python语言版binlog解析及闪回工具 MySQL闪回工具简介 及 binlog2sql工具用法 最近听同事介绍有了新的go语言版的my2sql。优点是不需要安装一大堆依赖包&#xff0c;直接可以安装使用&#xff0c;并且解析更高效&#xff0c;试用一下。 一、 下载安装 1. 软件下载 …

【原理图PCB专题】Cadence 17.4 配置Capture.ini让CIS数据库界面查看PCB封装

在CIS数据库中,如果进行了正确配置是可以查看原理图符号库与PCB封装库的。如下所示: 看到封装库的意义在于一个原理图封装是可以对应多个PCB封装的,如同一个原理图座子,对应了侧插或是竖插,那在没有PCB封装的时候,我们只能通过去看详细资料来判断。如果有PCB封装显示,只…

设计模式-访问者(Visitor)模式详解和应用

文章目录 前言访问者模式介绍结构包含的角色应用场景代码示例访问者模式的扩展访问者模式优缺点总结 前言 最近在做一个根据数学表达式生成java执行代码的功能&#xff0c;其中用到了访问者模式。使我对访问者模式有了更深入的理解。故写下此篇文章分享出来&#xff0c;不足之…

IPV6协议之RIPNG

目录 前言&#xff1a; 一、RIPNG与RIP的区别 二、如何配置RIPNG 如何解决RIPNG环路问题呢&#xff1f; 控制RIPNG的选路 1、修改RIPNG默认优先级 2.配置接口附加开销值从而干涉RIPNG的选路 RIPNG拓展配置 1.RIPNG的认证 配置RIPNG进程下的IPsec认证&#xff1a; 配…

Spring Cloud Gateway教程

1 微服务网关概述 Spring Cloud Gateway是在 Spring 生态系统之上构建的API网关服务&#xff0c;旨在为微服务架构应用提供一种简单有效的统一的API路由管理方式。 Spring Cloud Gateway主要功能&#xff1a; 反向代理认证鉴权流量控制熔断日志监控 2 Spring Cloud Gateway三…