当前位置: 首页 > news >正文

MySQL数据库索引

索引的定义

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

索引的作用

加快表的查询速度,还可以对字段排序

索引的副作用

会额外占用磁盘空间;更新包含索引的表会花费更多的时间,效率会更慢

索引的工作方式

没有索引的情况下,要根据条件查询某行数据时,需要先扫描全表,再定位某行数据的位置。

有了索引后,会先通过查询条件的字段值找到其索引对应的行记录的数据的物理地址,然后根据物理地址直接访问相应的行记录的数据,就像根据书目录的页码快速找到所需的内容。

创建索引的依据
  1. 表中的记录行数较多时,一般超过300行的表建议要有索引

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

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

索引的类型

1. 普通索引

create index 索引名 on 表名 (字段);
#直接创建索引
alter table 表名 add index 索引名 (字段);
#修改表方式创建索引

2. 唯一索引

create unique index 索引名 on 表名 (字段);
#直接创建唯一索引
alter table 表名 add unique 索引名 (字段);
#修改表方式创建

3. 主键索引

create table 表名 ([...],primary key (字段));
#创建表的时候指定
alter table 表名 add primary key (字段);
#修改表方式创建

4. 主键索引

create index 索引名 on 表名 (字段1, 字段2, ....);
alter table 表名 add index 索引名 (字段1, 字段2, ....);例:
create unique index 索引名 on 表名 (字段1, 字段2, ....);
alter table 表名 add unique 索引名 (字段1, 字段2, ....);
select .... from 表名 where 字段1=XX and 字段2=XX ... ;
#用 and 做逻辑运算符多字段查询时,要创建组合索引且要满足最左原则
#用 or 做逻辑运算符多字段查询时,所有字段都要单独创建单列索引

5. 全文索引

create fulltext index 索引名 on 表名 (字段);
#直接创建索引
alter table 表名 add fulltext 索引名 (字段);
#修改表方式创建#支持模糊查询
select .... from 表名 where match(字段) against('单词');
查看索引
show index from 表名;
show keys from 表名;
删除索引
drop index 索引名 on 表名;
#直接删除索引
alter table 表名 drop primary key;
#修改表方式删除索引
alter table 表名 drop primary key;
#删除主键索引

例:
比如为某商场做一个会员卡的系统。这个系统有一个会员表,有下列字段:
会员编号        int
会员姓名        varchar(10)
会员身份证号码      int(18)
会员电话        int(11)
会员住址        varchar(50)
会员备注信息       text

mysql命令:
create table member (id int(10),name varchar(10),cardid varchar(10),phone int(11),address varchar(50),remark text);

alter table member add primary key (id);
#会员编号,作为主键,使用primary key

create index name_index on member (name);
#会员姓名,如果要建索引的话,那么就是普通的index

create unique index cardid_index on member(cardid);
#会员身份证号码,如果要建索引的话,那么可以选择unique(唯一的,不允许重复)

alter table member add fulltext remark_index (remark);
#会员备注信息,如果需要建索引的话,可以选择fulltext,全文搜索
#不过fulltext用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的index也可以

字段含义
字段含义
table表的名称
non_name如果索引不能包括重复词,则为0;如果可以,则为1
key_name索引的名称
seq_in_index索引中的列序号,从1开始
column_name列名称
collation列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)
cardinality索引中唯一值数目的估计值
sub_part如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL
pacted指示关键字如何被压缩。如果没有被压缩,则为NULL
null如果列含有NULL,则含有YES。如果没有,则该列含有NO
index_type用过的索引方法(btree, fulltext, hash,rtree)
comment备注

相关文章:

MySQL数据库索引

索引的定义 索引是一个排序的列表,包含索引字段的值和其对应的行记录的数据所在的物理地址 索引的作用 加快表的查询速度,还可以对字段排序 索引的副作用 会额外占用磁盘空间;更新包含索引的表会花费更多的时间,效率会更慢 …...

【LLM 】7个基本的NLP模型,为ML应用程序赋能

在上一篇文章中,我们已经解释了什么是NLP及其在现实世界中的应用。在这篇文章中,我们将继续介绍NLP应用程序中使用的一些主要深度学习模型。 BERT 来自变压器的双向编码器表示(BERT)由Jacob Devlin在2018年的论文《BERT:用于语言…...

数字人私人定制

数字人是什么? 在回答这个问题之前,我们先回答另一个问题,人如何与人工智能交流?目前可以通过文字、语音、电脑屏幕、手机屏幕、平板、虚拟现实设备等和人工智能交流,为了得到更好的交流体验,人工智能必然…...

CollectionUtils

使用 CollectionUtils 类的常用方法 在Java开发中,我们经常需要对集合进行各种操作,而Apache Commons Collections库提供了一个方便的工具类 CollectionUtils,其中包含了许多实用的方法。在这篇博客中,我们将深入了解一些常用的方…...

很想写一个框架,比如,spring

很想写一个框架,比如,spring。 原理很清楚,源码也很熟悉。 可惜力不从心,是不是可以找几个小弟一起做。...

Java集合/泛型篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、说说LinkHashSet( HashSet+LinkedHashMap)二、HashMap(数组+链表+红黑树)三、说说ConcurrentHashMap前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通…...

ACES 增强版不丹水稻作物地图(2016-2022 年)

ACES 增强版不丹水稻作物地图(2016-2022 年) 用于改善粮食安全决策的 2016-2022 年年度作物类型稻米地图仍然是不丹的一项挑战。这些地图是与不丹农业部和 SERVIR 合作开发的。通过专注于发展不丹的科学、技术、工程和数学 (STEM),我们共同开…...

【Spark精讲】一文讲透Spark宽窄依赖的区别

宽依赖窄依赖的区别 窄依赖:RDD 之间分区是一一对应的宽依赖:发生shuffle,多对多的关系 宽依赖是子RDD的一个分区依赖了父RDD的多个分区父RDD的一个分区的数据,分别流入到子RDD的不同分区特例:cartesian算子对应的Car…...

nacos2.3.0配置中心问题处理

问题&#xff1a;Error to process server push response: {"headers":{},"abilityTable":{"supportPersistentInstanceByGrpc":true},"module":"internal"} 处理办法&#xff1a; 将pom.xml中 <!-- nacos服务注册/发…...

Apollo自动驾驶系统:实现城市可持续交通的迈向

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 ChatGPT体验地址 文章目录 前言引言&#xff1a;1. 什么是微服务架构&#xff1f;2. 微服务架构的组成要素3. 微服务架构的挑战和解决方案4. 微服务架构的可扩展性和弹性 第二部分&#x…...

【WPF.NET开发】附加事件

本文内容 先决条件附加事件语法WPF 如何实现附加事件附加事件方案处理附加事件定义自定义附加事件引发 WPF 附加事件 Extensible Application Markup Language (XAML) 定义了一种语言组件和称为附加事件的事件类型。 附加事件可用于在非元素类中定义新的 路由事件&#xff0c…...

java浅拷贝BeanUtils.copyProperties引发的RPC异常 | 京东物流技术团队

背景 近期参与了一个攻坚项目&#xff0c;前期因为其他流程原因&#xff0c;测试时间已经耽搁了好几天了&#xff0c;本以为已经解决了卡点&#xff0c;后续流程应该顺顺利利的&#xff0c;没想到 人在地铁上&#xff0c;bug从咚咚来~ 没有任何修改的服务接口&#xff0c;抛出…...

【pynput】鼠标行为追踪并模拟

文章目录 前言基本思路安装依赖包实时鼠标捕获捕获鼠标位置捕获鼠标事件记录点击内容效果图 实时按键捕获控制按键操作捕获按键事件组合键记录区间设置 用户操作记录与回溯基本思路完整代码效果图 利用本文内容从事的任何犯法行为和开发与本人无关&#xff0c;请理性利用技术服…...

docker小白第十天

redis集群主从容错切换案例 3主3从的redis集群&#xff0c;某个主机宕机了&#xff0c;需要对应的从机补位。 docker exec -it redis-node-1 /bin/bash # 进入容器1的命令行 redis-cli -p 6381 # 进入节点1的命令行 cluster nodes # 查看集群信息可以看到1号和6号对应是主从关…...

Apache SSI 远程命令执行漏洞

一、环境搭建 二、访问upload.php 三、写shell <!--#exec cmd"id" --> 四、访问 如图所示&#xff0c;即getshell成功&#xff01;​...

阿里云30个公共云地域、89个可用区、5个金融云和政务云地域

阿里云基础设施目前已面向全球四大洲&#xff0c;公共云地域开服运营30个公共云地域、89个可用区&#xff0c;此外还拥有5个金融云、政务云地域&#xff0c;并且致力于持续的新地域规划和建设&#xff0c;从而更好的满足用户多样化的业务和场景需求。伴随着基础设施的加速投入和…...

Linux驱动开发之杂项设备注册和Linux2.6设备注册

目录 一、杂项设备注册 杂项设备注册简介 杂项设备注册特点: 杂项设备注册相关API misc_register() misc_deregister() 杂项设备注册相关例程 例程简介 源码分享 二、Linux 2.6设备注册 Linux2.6设备注册简介 Linux 2.6设备注册特点 Linux2.6设备注册流程 ​Linu…...

javafx写一个文档编辑器

文本编辑器是一种用于编辑纯文本文件的工具。它具有基本的文本编辑功能,如插入、删除、复制、粘贴等。文本编辑器通常不具备格式化文本、排版和图形编辑等高级功能,专注于纯文本的编辑。常见的文本编辑器包括记事本(Notepad)、Sublime Text、Visual Studio Code、Atom、Emacs…...

PHP与Angular详细对比 帮助你选择合适的项目技术

开发可有效扩展并提供诺克斯堡级安全性的Web应用程序和网站是每个开发人员的梦想。而使用这样的产品是每个用户的愿望。因此&#xff0c;为您的项目选择最合适和可靠的技术非常关键。 虽然PHP和Angular是完全不同的技术——PHP与JavaScript是一个更恰当的比较——但它们都广泛…...

基于立锜RTQ7882,支持全协议及DP显示功能的PD快充方案

在上一篇文章【基于RTQ7882的车载PD快充方案 - 大大通 &#xff08;wpgdadatong.com&#xff09;】中&#xff0c;已经对立锜科技&#xff08;Richtek&#xff09;及主打产品RTQ7882的基本功能作了介绍。 本文将分享RTQ7882近期新增的功能&#xff0c;以及其Cost Down版本。 旨…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...