作家
登录

90%程序员面试都用得上的索引优化

作者: 来源: 2017-11-14 14:12:35 阅读 我要评论

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践


多关于索引,分为以下几点来讲解(技巧文)

  • 索引的概述(什么是索引,索引的优缺点)
  • 索引的根本应用(创建索引)
  • 索引的基来源基本收成面试重点)
  • 索引的数据构造(B树,hash)
  • 创建索引的原则(重中之重,面试必问!敬请收藏!)
  • 百万级别或以上的数据若何删除

一、索引的概述

1)什么是索引?

索引是一种特别的文件(InnoDB数据表上的索引是表空间的一个构成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,索引就相当于目次。当你在用新华字典时,帮你把目次撕掉落了,你萌芽某个字开首的成语只能大年夜第一页翻到第一千页。累!把目次还给你,则能快速定位!

2)索引的优缺点:

可以大年夜大年夜加快数据的检索速度,这也是创建索引的最重要的原因。,且经由过程应用索引,可以在萌芽的过程中,应用优化隐蔽器,进步体系的机能。然则,索引也是出缺点的:索引须要额外的保护成本;因为索引文件是零丁存在的文件,对数据的增长,修改,删除,都邑产生额外的对索引文件的操作,这些操作须要消费额外的IO,会降低增/改/删的履行效力。

二、索引的根本应用(真技巧文)

1)创建索引:(三种方法)

第一种方法:

「mysql优化专题」90%法度榜样员面试都用得上的索引优化手册(5)

「mysql优化专题」90%法度榜样员面试都用得上的索引优化手册(5)

第二种方法:应用ALTER TABLE敕令去增长索引:

ALTER TABLE用来创建通俗索引、UNIQUE索引或PRIMARY KEY索引。

索引名index_name可本身定名,缺省时,MySQL将根据第一个索引列赋一个名称。别的,ALTER TABLE许可在单个语句中更改多个表,是以可以在同时创建多个索引。

第三种方法:应用CREATE INDEX敕令创建

CREATE INDEX可对表增长通俗索引或UNIQUE索引。(然则,不克不及创建PRIMARY KEY索引)

「mysql优化专题」90%法度榜样员面试都用得上的索引优化手册(5)

三、索引的基来源基本收成不想像其余文┞仿那样一大年夜堆篇幅废话)

索引用来快速地寻找那些具有特定值的记录。如不雅没有索引,一般来说履行萌芽时遍历整张表。

索引虽好,但也不是无穷制的应用,最好相符一下几个原则

索引的道理很简单,就是把无序的数据变成有序的萌芽

2、对排序结不雅生成倒排表

3、在倒排表内容上拼上数据地址链

4、在萌芽的时刻,先拿到倒排表内容,再掏出数据地址链,大年夜而拿到具体数据

四、索引的数据构造(b树,hash)


主键索引区:PI(接洽关系保存的时数据的地址)按主键萌芽,

mysql经由过程存储引擎取数据,根本上90%的人用的就是InnoDB了,按照实现方法分,InnoDB的索引类型今朝只有两种:BTREE(B树)索引和HASH索引。B树索引是Mysql数据库中应用最频繁的索引类型,根本所有存储引擎都支撑BTree索引。平日我们说的索引不出不测指的就是(B树)索引(实际是用B+树实现的,因为在查看表索引时,mysql一律打印BTREE,所以简称为B树索引

「mysql优化专题」90%法度榜样员面试都用得上的索引优化手册(5)

萌芽方法:

通俗索引区:si(接洽关系的id的地址,然后再达到膳绫擎的地址)。所以按主键萌芽,速度最快

B+tree性质:

1.)n棵子tree的节点包含n个关键字,不消来保存数据而是保存数据的索引。

2.)所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大年夜小自小而大年夜次序链接。

3.)所有的非终端结点可以算作是索引部分,结点中仅含其子树中的最大年夜(或最小)关键字。

4.)B+ 树中,数据对象的插入和删除仅在叶节点长进行。

5.)B+树有2个头指针,一个是树的根节点,一个是最小关键码的叶节点。

2)哈希索引(好技巧文)

扼要说下,类似于数据构造中简单实现的HASH表(散列表)一样,当我们在mysql顶用哈希索引时,重要就是经由过程Hash算法(常见的Hash算法有直接定址法、平方取中法、折叠法、除数取余法、随机数法),将数据库字段数据转换成定长的Hash值,与这条数据的行指针一并存入Hash表的对应地位;如不雅产生Hash碰撞(两个不合关键字的Hash值雷同),则在对应Hash键下以链表情势存储。当然这只是简单模仿图。

「mysql优化专题」90%法度榜样员面试都用得上的索引优化手册(5)


  推荐阅读

  瞬间提升命令行的生产力100%

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践关于临盆力的话题老是让人充斥兴趣的。这里有很多方法晋升你的临盆力。今天,我共享一些敕令行的小技能,以及让你的人生>>>详细阅读


本文标题:90%程序员面试都用得上的索引优化

地址:http://www.17bianji.com/lsqh/38841.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)