ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

1-数据库索引

2022-05-05 00:02:26  阅读:125  来源: 互联网

标签:io 创建 数据库 查询 索引 key 磁盘


一.什么是索引

  索引是mysql的一种数据结构,这种数据结构称之为key,大白话说索引就是一种数据的组织方式

  表中的一行行数据按照索引规定的结构组织成了一种树形结构,该树叫B+树

二.为何要用索引

  优化查询速度

三.如何正确看待索引

错误的认知

  1.软件上线之后,运行了一段时间,发现软件运行很卡,想到要加索引。火烧眉毛再想着加索引,光把问题定位到索引身上就耗费很长时间,排查成本很高

  最好是在软件开发之初配合开发人员,定位常用的查询字段,然后为该字段提前创建索引

  2.索引越多越好

  索引是用于加速查询的,降低写效率

  如果某一张表的ibd文件中创建了很多颗索引树,意味着很小一个update语句就会导致很多颗索引叔都需要发生变化,从而把硬盘io打上去

四.储备知识

  1.索引根本原理就是把硬盘io次数降下来

  为一张表中的一行行记录创建索引就好比为书的一页页内容创建目录

  有了目录结构之后,我们以后的查询都应该通过目录去查询

  2.一次磁盘io带来的影响

  7200转/分钟,120转/s

  一次io的延迟时间=平均寻道时间(5ms)+平均延迟时间(4ms)——>9ms

  3.磁盘预读

  一页就是一个磁盘块

  innodb存储引擎一页16k,即一次io读16k到内存中

五.索引分类

 

六.创建索引的俩个步骤

  create index xxx on user(id);

  1.提取索引字段的值当作key,value就是对应的本行记录

  10————>10zs

  7————>7ls

  13————>13ww

  2.以key的为基础比较大小,生成树型结构

七.B+

  二叉树—>平衡二叉树—>B树—>B+树

  leaf node:叶子节点

  non-leaf node:根节点,树枝节点

  create index xxx on user(id)

 

标签:io,创建,数据库,查询,索引,key,磁盘
来源: https://www.cnblogs.com/wxd131488/p/16223028.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有