【MYSQL】索引篇(一)

1.为什么要有索引

索引的本质是一种数据结构,她的作用其实就是更好更快的帮我们找到数据库中存储的数据,就好比一本书,你想要找到指定的内容,但是如果在没有目录的情况下,你只能一页页的进行寻找,这样效率太低了。索引就相当于目录,能够迅速定位到你想要查找的内容。

2.索引的优缺点

2.1优点

1.上面已经提到了一点,如果没有索引,在我们查找我们需要的数据时,我们需要一行一行的比对,每次比对都需要从磁盘中获取数据,进行IO操作,所以索引的最主要作用就是减少无效的IO操作,加快查找速率。

2.在对数据库进行事务操作时,有助于保持数据一致性。可能有点不好理解,

举个🌰,当我们在图书馆借书时,

如果我没有索引,只能一个一个的去翻书架,一个个的去比对(全表扫描),此时整个图书馆需要把锁上整个书架区域,不让其他人打扰到我寻找我想要找的书(表锁)(其他人在书架区域外进行借还书等操作不受影响)只有我找到了,其他人才能开始,效率特别低

而如果有索引,我可以精确定位这个存书的格子,只把她锁住(行锁),不让别人借走了,但其他人可以同时去借其他的书,支持了并发。

正是因为索引的存在,让锁更精准的作用于目标数据,进一步提升一致性保障的效率和可靠性

3.在实现数据的参考完整性方面,可以加速表和表之间的连接 。换句话说, 对于有依赖关系的子表和父表连接查询时, 可以提高查询速度。

4.在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序 的时间 ,降低了CPU的消耗。

2.2缺点

1.前面也说过了,索引的本质就是一种数据结构,所以索引就是典型的用空间换时间。索引索引的缺点之一就是需要单独开辟空间来存储索引,增大了内存的消耗。

2.我们在对数据库中的数据进行修改时,同时也要对索引进行相应的修改,对他进行相应的维护,这样也加大了,间接的降低了数据的更新速度,也正因为这个,在对数据的查询不多,对数据修改多 的情况下不建议使用索引,这时候显得有点鸡肋了

相关推荐
2603_9696948530 分钟前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea43 分钟前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
阿义有问题2 小时前
MySQL 迁移达梦全流程实战:DTS 七步图解 + 对象名全大写适配(附踩坑清单)
数据库
猫猫不是喵喵.4 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
lsc_blog6 小时前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
墨痕诉清风6 小时前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库
Ashe8139 小时前
MySQL 慢日志先别急着加索引:三个指标能拦掉大半误判
数据库
ClouGence9 小时前
最基础的异构数据库 DDL 同步,我们踩过哪些坑?
数据库·mysql·postgresql
羑悻的小杀马特10 小时前
Redis持久化三剑客:RDB二进制快照、AOF文本日志、混合模式如何守护你的数据安全?
数据库·redis·缓存·aof·持久化存储·rdb
小呆爱发呆10 小时前
第三章 MySQL 库表操作
数据库·mysql·adb