十八、MySQL--索引

本文深入探讨了MySQL中的索引,包括其作为数据存储结构的作用,提高查询效率的功能。主要关注b+树索引,区分了聚集索引与辅助索引,并详细解释了它们的特性和应用场景。创建、查看和删除索引的操作也进行了说明。同时,文章提到了索引的优缺点,指出虽然能提升查询速度,但也会增加数据修改时的开销。
摘要由CSDN通过智能技术生成

1.什么是索引?

        索引是一种单独的、物理的对数据库表中一列多列的值进行排序的一种存储结构

        相当于书的目录,作用是提高SELECT语句的效率。

        既然相当于目录,目录也是书的内容,存储的内容都是数据形式,所以索引也是数据

2.为什么需要索引?

        我们需要从表中搜寻数据,常见的方法是全表扫描,即从表的第一个数据块开始查找,按顺序一直找到最后一个数据块。数据量少时,对MySQL服务要求不高,但数据量大时对MySQL性能消耗大,查找效率低下,那么有没有高效率的方法呢?

我们看书寻找特定内容时,可以先从目录找到目标内容,再去具体页数寻找内容,索引便应运而生。

3.MySQL中的索引

        innodb存储引擎支持3类索引

                b+树索引

                哈希索引

                全表索引

        其中b+树索引使用最多,故本文只讨论b+树索引

b+树是一种数据结构,用来存放索引的数据

b+树(BTREE)分为聚集索引(clustered index)和辅助索引(secondary index or non-clustered index)

        聚集索引

        定义:按照按照每张表的主键构造一棵b+树,同时叶子节点中存放的就是表中的整行数据

        也将聚集索引的叶子节点叫做数据页,索引组织表(即表中的数据照主键的顺序存放)中的数据也是索引的一部分。因为实际的数据页只能按照一棵b+树进行排序,因此一张表只能有一个聚集索引。查询优化器倾向于使用聚集索引,因为聚集索引能够在索引的叶子结点上直接找到数据。

 #因为索引有排序功能,所以使用查询语句查询带有索引的行时,不需要添加排序语句

        辅助索引

        叶子节点包含行的全部数据。叶子节点除了包含行的索引键值以外,每个索引行还包含了一个主键值,该主键值告诉innodb存储引擎,哪里可以找到与索引对应的数据

        #包含其他列的数据和指向主键索引的指针

        单列索引

        索引的键值数量为1

        复合索引

        和单列索引不同的是复合索引的键值数量不是1,而是大于等于2

        #复合索引中的单个前导列做查询,也可以使用该复合索引,但对于非前导列的查询不可以使用复合查询。

        创建索引

        CREATE INDEX id_name_idx ON IG(id,name);
        #在表IG中创建以id为前导name为非前导的复合索引id_name_idx

        查看索引

        show index from IG;
        #查看表IG的所有索引

        表中的一些参数:

                Key_name --》索引的名字

                Non_unique--》为0表示为唯一索引,为1表示为非唯一索引

                Collation --》列索引如何保存为。A表示为升序排序,null表示为不排序

                Cardinality--》数值越接近行数,字段越丰富,越适合作索引,相反则不适合作索引

        删除索引

        DROP INDEX id_name_idx on IG;

        #删除表IG中的索引id_name_idx

        

  索引的两面性

        优点:提高查询效率

        缺点: 修改了数据,MySQL会去修改索引,导致MySQL性能下降。维护索引的开销是比较大的

    

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值