10.MySQL索引(必考要点)
1.索引
1)索引概念
索引 :好比书的目录,是为了加快查找的效率,如果数据库中没有索引,此时查找的时候就需要把整个表都遍历一遍,就有点像“顺序表查找”,针对数据库进行查找,数据库在磁盘上,磁盘访问速度很慢,并且数据量也可能非常多,那么这个查找速度就很慢。索引就是为了避免数据库进行顺序查找,提高查找效率。
2)索引底层可以采用的数据结构
1.二叉树(二叉搜索树):中序遍历结果是有序的,假如说需要查找id<6 并且id>3的,就可以先找到id为6的元素,再找到id为3的元素,中序遍历3和6之间的结果就是想要的结果。
如果再比较平衡的情况下,查找效率就是O(logN)
缺点: 1.二叉树每个节点最多有两个分支子节点,当数据量比较大的时候,树的深度就会很高,这样操作效率也较低。 2.二叉搜索树直接获取到中序遍历不是很高效。
2.哈希表 :查找效率是O(1)
缺点: 用哈希表只能用于相等的情况,不能处理其他逻辑,也不能处理范围查找。
3.B+树(真是的索引结构——N叉搜索树) 首先,需要了解一下B树(也就是B-树) B树:
和二叉树的差异有: 1.每个节点不是2叉了,而是N叉 2.每个节点不是存一个数据了,而是可以存多个数据 3.度 = 存的数据个数 + 1
B+树
和B树相比,主要是两个方面发生变化 1.每一层元素之间都链接到了一起 2.数据旨在叶子节点上保存,非叶子节点上只保存一些辅助查找的边界
优势: 1.仍然是N叉树,深度不会很高 2.查找任何一条数据的速度都是比较平均的,不会出现效率差异大的情况 3.直接遍历链表就可以得到中序排列 4.叶子节点适合大数据磁盘存储,非叶子节点适合用内存存储,可以降低访问磁盘的次数
3)索引作用
1.加快查找效率,减慢插入、删除、修改的效率。 2.索引也会占用一定的磁盘空间和内存空间(空间换时间) 3.给具体表中的每一列来加索引的时候,加在主键上的索引和加在其他列上的索引不同
4)索引应用场景
主要用在查找很频繁,但是插入、删除、修改都不频繁的场景
5)索引的使用
创建主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)(关联到哪个列就在哪个列建立索引)时,会自动创建对应列的索引。
a.查看索引:
show index from 表名;
b.创建索引:
create index 索引名 on 表名(字段名);
例:create index idx_classes_name on classes(name);
c.删除索引: (主键的索引不能删)
drop index 索引名 on 表名;
例如:drop index idx_classes_name on classes;
相关文章
- mysql前缀索引使用,Mysql:前缀索引与索引[通俗易懂]
- MySQL Error number: MY-013059; Symbol: ER_IB_MSG_1234; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL查询:祝福那些过生日的人(mysql查询生日)
- 基于C的MySQL数据库连接实现(c连接mysql数据库)
- 提高mysql系统性能如何利用MySQL索引提升系统性能(mysql使用索引)
- MySQL建立索引表:增强查询效率(mysql建立索引表)
- MySQL从Shell管理数据库(mysql拿shell)
- MySQL库表散列:超越传统数据库索引(库表散列mysql)
- MySQL 监控:跟踪数据库性能和可用性(mysql监听)
- 构建MySQL集群:解决连接池管理问题(mysql集群连接池)
- 精选MySQL常用SQL语句,让你轻松执行数据库操作(mysql常用sql语句)
- 管理MySQL数据库版本管理实践(mysql数据版本)
- MySQL入门必备经典:学会快速上手(mysql 入门经典)
- MySQL如何安全删除唯一索引(mysql 删除唯一索引)
- MySQL主键是索引还是不是(mysql中主键是索引吗)
- C和MySQL无法建立正确连接(c c连不上mysql)
- MySQL中的条件语句详解(mysql中写条件语句)
- 深入浅出MySQL三范式的简述与实践(mysql三范式的理解)
- 无法修改MySQL索引解决方案简介(mysql不能修改索引)
- MySQL不能做到全联接,为什么(mysql不支持全联)