文档章节

mysql 索引

liuzhengyang
 liuzhengyang
发布于 2016/09/07 19:58
字数 569
阅读 45
收藏 0

索引

索引基础

索引作用

用于快速查找。可以用书的书签进行理解。

索引类型

索引多种类型适用于不用的场景。

B-Tree索引

mysql中默认的存储引擎innodb使用的是B+Tree,但是创建索引时使用的是using BTree。 B+Tree同一层是按照顺序排序的,并且有向右的指针,适合排序、范围查找。 B+Tree分为聚簇索引和非聚簇索引。 聚簇索引是一种数据存放方式,主键和数据都存储在索引的叶子节点中。 聚簇索引只能有一个,如果有主键则使用主键索引为聚簇索引,如果没有,则选择唯一的非空的索引作为聚簇索引,如果再没有,则生成一个。 除了聚簇索引都是非聚簇索引, 非聚簇索引的叶节点存储索引列的值和主键值。所以查找记录需要先查到主键,再通过主键找到对应的记录。 当索引的列包含了要查询的列时,就形成了覆盖索引,覆盖索引是针对某一条查询而言的。覆盖索引不需要再按主键进行查询。

索引好与坏

索引的目的是增加查找速度,如果衡量一个索引是否是一个好的索引,需要看索引的列、索引列的顺序、和使用的查询语句有哪些。看一个索引好坏主要有三个方面

  • 查询语句是否使用到了索引列
  • 由于BTree索引结构,限制只能高效的使用最左前缀,不能跳过索引某一列,当索引一列使用范围匹配后
  • 索引是否可以一次将数据获取,最好是聚簇索引或覆盖索引 使用了索引列,能达到一星索引,

索引优缺点

索引优点

  • 索引大大减少了服务器需要扫描的数据量
  • 索引可以帮助服务器避免排序和临时表
  • 索引可以将随机I/O变为顺序I/O

索引缺点

  • 索引会增加额外的存储空间
  • 插入数据和修改数据时

© 著作权归作者所有

共有 人打赏支持
liuzhengyang

liuzhengyang

粉丝 54
博文 18
码字总数 16157
作品 3
海淀
程序员
私信 提问

暂无文章

Mac java多版本控制

vim ~/.bash_profile ORACLE_JAVA_6_HOME="/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home"ORACLE_JAVA_7_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents......

晨猫
10分钟前
1
0
[转载]Qlist的用法

QList是一种表示链表的模板类。 QList是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。 QList、QLinkedList和QVector提供的操作...

shzwork
10分钟前
0
0
谷歌的JavaScript编写风格中 13点值得我们注意的!

  对于那些还不熟悉JavaScript的编写风格的人,谷歌提供了编写JavaScript的编写风格指南,谷歌风格指南 其中列出了编写干净、可理解代码的最佳风格实践。   对于编写有效的JavaScript来说...

peakedness丶
24分钟前
3
0
Spring Boot2中配置HTTPS

1.生成证书 使用jdk,jre中的keytool.exe生成自签名的证书,需要配置JAVA_HOME和path环境变量,即jdk的环境变量。命令如下: keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA ...

voole
31分钟前
4
0
Spring Cloud Alibaba 新版本发布:众多期待内容整合打包加入!

在Nacos 1.0.0 Release之后,Spring Cloud Alibaba也终于发布了最新的版本。该版本距离上一次发布,过去了整整4个月!下面就随我一起看看,这个大家期待已久的版本都有哪些内容值得我们关注。...

程序猿DD
34分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部