MySQL——索引基础知识梳理Ⅰ

定义:

MySQL官方对索引(Index)的定义为:是帮助MySQL高效获取数据的数据结构。

索引可以简单理解为排好序的快速查找数据结构,目的在于提高查找效率,可以类比字典。

索引会形象到where后面的查找和order by后面的排序。

一般索引本身也很大,不可能全部存储在内存中,因此索引常常以索引文件的形式存储在磁盘上。

我们平时所说的索引,如果没有特别指明,都是指 B树 结构组织的索引。其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引都默认使用B+树索引,统称索引。当然,除了B+树这种类型的索引外,还有哈希索引(Hash Index)等。

 

优势:

           类似大学图书馆建书目索引,提高数据检索效率,降低数据库的IO成本

           通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

 

劣势:

          实际上索引也是一张表,该表保存了主键和索引字段,并指向实体表的记录,所以索引也要占用空间。

          虽然索引大大提高了查询速度,但是却降低了更新表的速度,如对表进行INSERT,UPDATE,DELETE。

          索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或者优化查询。

 

索引的分类:

         1、单值索引:即一个索引只包含单个列,一个表可以有多个单列索引。

         2、唯一索引:索引列的值必须唯一,但允许为空值。

              CREATE UNIQUE INDEX...

         3、复合索引:即一个索引包含多个列

               基本语法:

          创建:   CREATE INDEX indexName on mytable(columnname(length));

               ALTER mytable ADD INDEX [indexName] ON(columnname(length));

          删除:    DROP INDEX [indexName] ON mytable;

          查看:    SHOW INDEX FROM table_name\G;

 

哪些情况需要创建索引:

          1、主键自动创建唯一索引。

          2、频繁作为查询条件的字段应当创建索引。

          3、查询中与其他表关联的字段,外键关系建立索引。

          4、频繁更新的字段不适合创建索引。

          5、where条件里用不到的字段不创建索引。

          6、单键和组合索引的选择问题:在高并发下倾向创建组合索引。

          7、查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度。

          8、查询中统计或分组字段

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值