当前位置:网站首页>【MySQL】索引的分类
【MySQL】索引的分类
2022-07-01 21:45:00 【张艳伟_Laura】
浅浅的了解一下索引的各种分类以及索引是如何创建和删除的。
【正文】
一、索引的分类
MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。
● 从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。
● 按照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。
● 按照作用字段个数进行划分,分成单列索引和联合索引。
1. 普通索引
在创建普通索引时,不附加任何限制条件,只是用来提高查询效率。这类索引可以创建在任何数据类型中,其值是否唯一和非空,要由字段本身的完整性约束条件决定。建立索引后,可以通过索引进行查询,例如,在表student的字段name上建立一个普通索引,查询记录时就可以根据该索引进行查询。
2. 唯一性索引
使用UNIQUE参数可以设置索引为唯一性索引,在创建唯一性索引时,限制该索引的值必须是唯一的,但允许有空值,在一张数据表里可以有多个唯一索引。
3. 主键索引
主键索引就是一种特殊的唯一性索引,在唯一索引的基础上增加了不为空的约束,也就是NOT NULL+UNIQUE 一张表里最多只有一个主键索引
为什么,这是由主键索引的物理实现方式决定的,因为数据存储在文件中只能按照一种顺序进行存储。
4. 单列索引
在表中的单个字段上创建索引,单列索引只根据该字段进行索引,单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引,主要保证该索引只对应一个字段即可,一个表可以有多个单列索引。
5. 多列(组合、联合)索引
多列索引是在表的多个字段组合上创建一个索引。该索引指向创建时对应的多个字段,可以通过这几个字段进行查询,但是只有查询条件中使用了这些字段中的第一个字段时才会使用。
例如:在表中的字段Id name和gender上建立一个多列索引 idx_id_name_gender,只有在查询条件中使用了字段Id时该索引才会被使用,使用组合索引时遵循最左前缀集合。
6. 全文索引

7. 补充:空间索引
小结:不同的存储引擎支持的索引类型也不一样 :
InnoDB :支持 B-tree、Full-text 等索引,不支持 Hash索引;
MyISAM : 支持 B-tree、Full-text 等索引,不支持 Hash 索引;
Memory :支持 B-tree、Hash 等索引,不支持 Full-text 索引;
NDB :支持 Hash 索引,不支持 B-tree、Full-text 等索引;
Archive :不支持 B-tree、Hash、Full-text 等索引;
边栏推荐
- Redis配置与优化
- Sonic cloud real machine learning summary 6 - 1.4.1 server and agent deployment
- Several ways of writing main function in C
- Go — 相关依赖对应的exe
- 【juc学习之路第9天】屏障衍生工具
- [noip2013] building block competition [noip2018] road laying greed / difference
- plantuml介绍与使用
- 上半年暂停考试要补考?包含监理工程师、建筑师等十项考试
- CSDN购买的课程从哪里可以进入
- Four methods of JS array splicing [easy to understand]
猜你喜欢

Getting started with the lockust series

MySQL之MHA高可用配置及故障切换

JS how to get a list of elements in a collection object

工控设备安全加密的意义和措施

【直播回顾】战码先锋首期8节直播完美落幕,下期敬请期待!

ICML2022 | 基于元语义正则化的介入性对比学习
![[intelligent QBD risk assessment tool] Shanghai daoning brings you leanqbd introduction, trial and tutorial](/img/ac/655fd534ef7ab9d991d8fe1c884853.png)
[intelligent QBD risk assessment tool] Shanghai daoning brings you leanqbd introduction, trial and tutorial

One of the basic learning of function

黑马程序员-软件测试--06阶段2-linux和数据库-01-08第一章-linux操作系统阶段内容说明,linux命令基本格式以及常见形式的说明,操作系统的常见的分类,查看命令帮助信息方法,

Aidl basic use
随机推荐
地图其他篇总目录
Electron学习(三)之简单交互操作
【juc学习之路第8天】Condition
物联网rfid等
Training on the device with MIT | 256Kb memory
[intelligent QBD risk assessment tool] Shanghai daoning brings you leanqbd introduction, trial and tutorial
Copy ‘XXXX‘ to effectively final temp variable
Chapter 9 Yunji datacanvas company has been ranked top 3 in China's machine learning platform market
手动实现function isInstanceOf(child,Parent)
Unity 使用Sqlite
The difference between NiO and traditional IO
Getting started with the lockust series
Gaussdb (DWS) active prevention and troubleshooting
Go — 相关依赖对应的exe
Pytest Collection (2) - mode de fonctionnement pytest
中通笔试题:翻转字符串,例如abcd打印出dcba
mysql 学习笔记-优化之SQL优化
二叉树的基本操作
MySQL series transaction log redo log learning notes
Simple interactive operation of electron learning (III)