【MySQL进阶之路 | 高级篇】索引的声明与使用

1. 索引的分类

MySQL的索引包括普通索引,唯一性索引,全文索引,单列索引和空间索引.

  • 从功能逻辑上说,索引主要分为普通索引,唯一索引,主键索引和全文索引.
  • 按物理实现方式,索引可以分为聚簇索引和二级索引.
  • 按作用字段个数进行划分,分为单列索引和联合索引.

(1). 普通索引

在创建普通索引时,不附加任何限制条件,只是用于提高查询速度.这类索引可以创建在任何数据类型上,其值是否唯一或非空,要由字段本身的完整性约束条件决定.建立索引后,可以通过索引进行查询.

(2). 唯一索引

使用UNIQUE参数可以设置唯一索引,在建立唯一索引时,限制该索引的值必须是唯一的.但允许是空值.在一张表里可以有多个唯一索引.

(3). 主键索引

主键索引是一种特殊的唯一性索引.在唯一约束的基础上添加了非空的约束,一张表里只能有一个主键索引.这是由主键索引的物理实现方式决定的.因为数据存储在文件中只能按照一种顺序进行存储.

(4). 联合索引

联合索引是在表的多个字段上创建一个索引,该索引指向创建的多个字段.可以通过几个字段进行查询,但查询条件中使用这些字段的第一个字段时才会被使用.使用联合索引时遵循最左前缀原则.

(5). 全文索引

使用参数FULLTEXT可以设置索引为全文索引.在定义索引的列上支持值的全文查找,允许在这些索引列中插入空值和重复值.全文索引只能创建在CHAR, VARCHAR, TEXT类型及其系列类型的字段上,查询数据量较大的字符串类型的字段时,使用全文索引可以提高查询速度.

(6). 小结

  • InnoDB : 支持b+树,full-text等索引,不支持hash索引.
  • MyISAM : 支持b+树,full-text等索引,不支持hash索引.
  • Memory : 支持b+树,hash索引等,不支持b+树.

2. 创建索引

MySQL支持多种方法在单个或多个列上创建索引,在创建表的定义语句中CREATE TABLE中指定索引列,使用ALTER TABLE语句在已经创建的表中创建索引,或者使用CREATE INDEX语句在已经存在的表中添加索引.

(1). 创建表时添加索引

CREATE TABLE demo1(
demo1_id INT PRIMARY KEY AUTO_INCREMENT,
demo_fname VARCHAR(15) UNIQUE KEY,
demp_lname VARCHAR(20),
INDEX demo1_index_lname(demp_lname)
);
  • 隐式的方式创建索引.在声明有主键约束,唯一性约束,外键约束的字段上,会自动的添加相关的索引.
  • 显式的方式创建普通索引.
  • 我们可以通过show index from 表名的方式来查看表中的索引.
  • 我们只能在创建表时通过定义主键约束的方式隐式定义主键约束.

(2). 创建表后添加索引

CREATE TABLE demo2(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
books VARCHAR(20)
);ALTER TABLE demo2 ADD INDEX demo2_index_books(books);ALTER TABLE demo2 ADD UNIQUE KEY demo2_uq_name(name);show index from demo2;

4b3b5ff9183c45c2bc737a25ac78f4be.png

 

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

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

相关文章

苹果电脑清理垃圾怎么清理 macbook怎么清理电脑垃圾文件 macos优化软件 cleanmymac怎么使用

在选择电脑时,不少人都会选择拥有高性能和轻薄机身的mac。一开始,它确实如我们所期待的那样健步如飞,然而,随着时间的流逝,有没有觉得您的Mac有时候像是需要一个好的春季大扫除一样?随着我们不断使用电脑&a…

Lobe Chat openai claude

claude-3-5-sonnet-20240620 $ docker run -d -p 3210:3210 \-e OPENAI_API_KEYsk-xxxx \-e OPENAI_PROXY_URLhttps://api-proxy.com/v1 \-e ACCESS_CODElobe66 \--name lobe-chat \lobehub/lobe-chatDocker 部署 更新 docker ps CONTAINER ID IMAGE …

1590. 【中山市第十二届义务教育段学生信息学邀请赛】除法运算(divide)

时间限制: 1 s 空间限制: 256 MB 题目描述 Jimmy 开始学习除法啦!一开始他学习了余数为 0 的除法(也就是我们常说的整除),后来又学习了余数不为 0 的除法,所以 Jimmy 对被除数、除数、商、余数这些概念都已经了如指…

C语言学习步骤

C语言学习步骤 学习C语言是一个系统化的过程,以下是一些基本的步骤和建议: 1. 理解基础概念:首先,了解编程的基本概念,比如变量常量、数据类型、指针、控制结构(顺序语句、分支语句、循环语句)、…

神经网络参数-----学习率(Learning Rate)

学习率 学习率是训练神经网络的重要超参数之一,它代表在每一次迭代中梯度向损失函数最优解移动的步长。它的大小决定网络学习速度的快慢。在网络训练过程中,模型通过样本数据给出预测值,计算代价函数并通过反向传播来调整参数。重复上述过程…

Geoserver源码解读四 REST服务

文章目录 文章目录 一、概要 二、前置知识点-FreeMarker 三、前置知识点-AbstractHttpMessageConverter 3.1 描述 3.2 应用 四、前置知识点-AbstractDecorator 4.1描述 4.2 应用 五、工作空间查询解读 5.1 模板解读 5.2 请求转换器解读 一、概要 关于geoserver的r…

zabbix-agent2启动失败报错Unit zabbix-agent2.service entered failed state.

文章目录 1,用systemctl status zabbix-agent2查看报错状态2,用journalctl -xe查看一下报错日志3,再看一下zabbix的日志。4,错误修改5, 再次重启zabbix-agent2 1,用systemctl status zabbix-agent2查看报错…

高考季-计算机相关专业与所学核心课程介绍以及高考报考学校推荐

计算机相关专业通常包括计算机科学与技术、软件工程、信息安全、网络工程、人工智能等。以下是对这些专业的详细介绍、所学课程内容以及一些推荐的学校和专业。 1. 计算机科学与技术 专业介绍 计算机科学与技术是研究计算机系统及其相关技术的学科,包括计算机硬件…

ref与reactive

在Vue 3中,ref 和 reactive 是两种用于创建响应式状态的API。它们在实现方式和使用场景上有所不同。下面是对 ref 和 reactive 的深度解析: 1. ref 解析 ref 用于创建一个单一的响应式引用,可以用来包裹基本类型(如字符串、数字…

Word如何在页眉中插入和删除横线

你平常是否遇见到Word的页眉中有一条横线,怎么也删不了!!! 今天刘小生分享如何在页眉中插入和删除横线,我们一起操练起来吧! 1、Word页眉插入横线 选择【插入】-【页眉页脚】,在“页眉页脚”…

00_Python核心编程

Python入门 一 Python初识 1 Python的历史 Python的历史python是蟒蛇的含义python是一种解释型的,面向对象的,带有动态语义的高级程序设计语言. python是一种使你在编程时能够保持自己的风格的程序设计语言,你不用费什么劲就可以实现你想要的功能,并且编写的程序清晰易懂. …

ArcGIS Pro SDK (五)内容 5 元数据

ArcGIS Pro SDK (五)内容 5 收藏夹 目录 ArcGIS Pro SDK (五)内容 5 收藏夹1 获取其 IMetadata 接口2 获取项目的元数据:获取XML3 设置项目的元数据:设置XML项4 检查元数据是否可以编辑:可以编辑…

可靠性评估的概念和流程

可靠性评估的概念和流程 可靠性评估是系统工程中的一项重要任务,它旨在确定系统的可靠性和预期的运行时间,以便进行设计优化和维护决策。其概念和流程通常涉及以下几个关键要素: 可靠性模型: 可靠性模型是描述系统或组件性能的…

常见的排序算法【总结】

目录 排序的基本概念与分类排序的稳定性内排序与外排序简单排序冒泡排序时间复杂度: O ( n 2 ) O(n^2) O(n2) 简单选择排序排序原理:时间复杂度: O ( n 2 ) O(n^2) O(n2) 插入排序排序原理:时间复杂度: O ( n 2 ) O(n^…

晶方科技:台积电吃饱,封装迎春?

半导体产业链掀起涨价潮,先进封装迎接利好。 这里我们来聊国内先进封装企业——晶方科技。 近期,由于产能供不应求,台积电决定上调先进封装产品价格,还表示订单已经排到2026年。 大哥吃不下了,剩下的订单全都是空间。…

主线程和子线程

主线程 当Java程序启动时,一个线程会立刻运行,该线程通常叫做程序的主线程(main thread),即main方法对应的线程,它是程序开始时就执行的。 Java应用程序会有一个main方法,是作为某个类的方法出…

JDK 23:Loom改进版发布

1.新版 Loom EA 改进虚拟线程中的监视器(同步方法) Project Loom 发布了新的抢先体验版本(23-loom4-102 - 2024/5/31)。改进了对象监视器实现,可以防止虚拟线程在以下情况下固定其载体线程: 当进入同步方法/语句时发生阻塞&…

问题-python-爬虫无法爬取外网资源问题(python爬虫)

方法一: 这个报错通过关掉梯子就能解决,目前不清楚具体原理。 后续了解具体原理了,我会在这篇文章上更新具体分析—— 方法二: 也可以把这个东西打开,但是用完建议关掉。

python无法安装scipy怎么办

python安装scipy时出现以下错误&#xff1a; from scipy.misc import imread Traceback (most recent call last):File "D:/Pyproject/qq_Spider/create_cloud.py", line 14, in <module>from scipy.misc import imread ModuleNotFoundError: No module named …

浅析Kubernetes的权限控制模型

Kubernetes是一个开源的容器编排引擎&#xff0c;用来对容器化应用进行自动化部署、扩缩和管理。它是一个强大的集群管理系统&#xff0c;提供了丰富的功能。他的一个核心组件是Kubernetes API Server&#xff0c;这是集群中所有资源管理的入口点&#xff0c;提供了一组RESTful…