SQL优化是我们面试常被提问的问题,那么我们遇到后该如何回答呢?接下来就让我带大家一起去看看,开始之前难免要讲一些枯燥的知识点,这也是基础知识,有知识积累的可以选择快速划过。
首先明确一点,sql优化的核心就是优化索引,那么回答时优先围绕着索引展开话题即可!
既然使用索引,索引为我们解决了什么问题?解决问题的同时是否又带来了新的问题?那我们如何使用它?如何和面试官聊(重点)?
一、索引解决了什么问题
1,提升了查询效率,它就像字典的目录,让我们可以快速查找到想要的数据。
2,提高了CPU使用率,由于索引的数据结构是b+树,带着排序功能,所以一定程度上可以达到此目的(想了解更多关于树的内容,可以关注下公众号: 徒步归行)
二、索引带来了什么问题
1,占用了磁盘空间,创建索引会占用物理空间的。
2,降低了增删改的效率,为什么这么说呢,因为索引结构是 b+树,每次操作都会btree都会进行一次排序,这便影响了效率
3,不适用于任何场景,比如数据量少的表或者修改操作频繁的字段
三、 如何使用索引
1,常用索引类型:
主键索引:主键,值是唯一的,不为null
唯一索引:union,值是唯一的,可为null(这也是和主键索引的区别)
单值索引:index,单个字段,但是一个表可以有多个单值索引
复合索引:index, 多个列组成的索引