MySQL的索引:
数据库就像一本书本一样,内容就是数据库保存的数据,而索引则代表书的目录,索引的英文index就是目录的意思,我们可以通过目录迅速的找到你要想要找的内容在哪个位置,这比一页一页的去翻快的不是一个量级的速度,而索引则是和目录同样的效果,我们不需要遍历整个表的数据而是通过索引可以直接获取保存的数据是什么。但是鱼和熊掌不可兼得,既然我们得到了这么快的查询,牺牲的就是我们增删改的速度和空间的消耗,我们可以理解为我们需要增加书本的内容,首先我们需要增加纸张的数量,然后我们需要对目录进行重新修改。而数据库也是一样,当你增加删除一个数据时,需要对整个索引进行修改,这就会导致时间上的增加,也降低了增删改的速度,所以索引一般用于查多改少的环境下。
聚簇索引和非聚簇索引:
聚簇索引在一个表中只能有一个存在,因为聚簇索引就是主键索引,我们知道主键在一个表中只能存在一个,所以聚簇索引在一个表中只有一个。聚簇索引在保存数据的时候是直接保存数据,而非聚簇索引直接保存该数据的主键。
非聚簇索引:在查找数据的时候是先通过索引找到主键,再通过主键去取这个数据,这个过程经历的二次查询,这种情况也被称为回表查询。非聚簇索引相比于聚簇索引查找得速度比较慢,非聚簇索引只需要保存索引列的信息和主键,所以保存的数据少,消耗的空间小。
聚簇索引:因为聚簇索引直接保存数据所以当我们进行查找数据的时候,我们就可以直接取得这个数据,就没有回表查询得操作,速度也就更快,聚簇索引不仅需要保存索引列的信息还需要保存这条数据的完整信息,所以需要保存的数据多,占用的空间也更大。