![a31e6a4587a2c76c73a7466a0d16c3be.png](https://i-blog.csdnimg.cn/blog_migrate/49261815c97243c264ed2057dc54b8f2.png)
学习任何技术,首先我们要知道怎么用,熟练之后再探究其原理,最后再根据业务进行优化。
——船长
MySQL的索引有哪些?
主键索引:表的主键列会默认添加索引,索引中保存了该行记录的所有数据
唯一索引(upique):该列的所有值必须唯一
普通索引(normal):普通列的一种索引
聚合索引:是普通索引中的一种,但是它是由多个列组成的索引
索引怎么用?
假设我们有几张表,如下
![9db46b4b8c6be577b4e115cb23f7aea8.png](https://i-blog.csdnimg.cn/blog_migrate/ba91a53fd053d264aaf1576074dc3b9b.jpeg)
使用navicat设计学生student表,并添加索引如下
![b1ebf5105aa0ba25de06d82d03e69a2f.png](https://i-blog.csdnimg.cn/blog_migrate/560fc2f3c29dc6b0d96820d9aeadc7b3.jpeg)
1、主键索引
mysql会为每个表的主键自动添加索引,在其索引树的叶子节点中,保存着主键所在行的所有数据,这个后面会讲。也就是说只要找到主键,就代表找到了该行记录,所以使用了主键索引速度会比较快
![c38a1607d1e2f30c56238015131a6547.png](https://i-blog.csdnimg.cn/blog_migrate/b0efea9db0d3bee2ead1ba9ffb237b3a.jpeg)
2、唯一索引
唯一索引对应的列,其数据不可重复,这点相当于主键,不同的是其索引树的叶子节点保存的不是所在行的所有数据,而是该列的值,查询速度比主键慢一些
![a857074cb474bc3d0b24cf1fd71e3462.png](https://i-blog.csdnimg.cn/blog_migrate/2a2fe71b2acec865ee5fb182871a8e4e.jpeg)
3