MySQL索引介绍

摘要

本文主要介绍MySQL数据库的索引,之前有写过mongo index,
cassandra index,总体来说,mongo index与MySQL会比较类似,因为都是基于B树,Cassandra的差的多点。有兴趣的可以对比着看看

存储引擎

MySQL可选的存储引擎有十几种,主要有两种,一种是MyISAM,一种是InnoDB。5.7以后的默认存储引擎是InnoDB。Oracle也推荐在大部分场合下使用这种存储引擎。

MyISAM

提供了表级别的锁,锁粒度大,加锁快,但是表被锁住的概率就比较高,影响读写性能。一般用在只读或者读比较多的情况。不能提交事务。

InnoDB

提供ACID事务,行级别的锁。将数据以聚簇索引(clusted index)的方式进行存储,对于常见的基于主键的查询case可以有效的降低I/O操作。

所谓的聚簇索引的其实就是将数据直接存在index页,这样没必要先扫index,然后根据数据的物理地址去取数据。

索引

InnoDB

  • 聚簇索引(B树)

    聚簇索引要求表必须有主键,如果没有显式指定,系统会自动
    找到第一个unique的索引作为主键,如果不存在这种列,则MySQL自动
    为InnoDB表生成一个隐含字段作为主键

  • 二级索引[secondary index](B树)

    就是非聚簇索引以外的,二级索引的每条记录里都包含对应行的主键,先根据二级索引找到主键,再根据主键找到对应行。因为二级索引都会存primary key,所以primary key不宜过长。

这点上和cassandra类似,不过cassandra不叫聚簇索引,叫主键索引,不同的是cassandra的二级索引不是基于B树的,而是新创建一张表,primary key为索引列,剩下的为原表的primary key。而且cassandra而且cassandra是hash,索引对范围查询支持不好
http://blog.csdn.net/fs1360472174/article/details/52733434

  • 空间索引(R树)MySQL5.7.5以上

  • 前缀索引

前缀索引是当要索引的文本类型的字段很长的时候,直接以整个字段来做为index的key代价太高,可以截取前几位来作为index key

ALTER TABLE test ADD INDEX 'prefix' (first_name,last_name(4))

这种方式需要谨慎,要确保截取的位数能够区分出大部分数据,比如原来的
索引列基数是90%。前缀索引至少尽可能的接近这个数。

另外前缀索引也不能用于ORDER BY和GROUP BY。原因很好理解,因为根据索引查到的不是唯一行值,这是个坑,可能会导致有索引比没索引查询还要慢

参考

https://dev.mysql.com/doc/refman/5.7/en/storage-engines.html

https://dev.mysql.com/doc/refman/5.7/en/create-index.html

https://www.kancloud.cn/kancloud/theory-of-mysql-index/41849

MySQL数据库从入门实战课

12-31
限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务。 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 注意:原价129的课程,最后2天限时秒杀仅需49元!! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:  一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。  
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值