您当前的位置:首页 > 互联网百科 > 大数据

数据分析所需了解的索引知识,一文带你纵览全貌

时间:2020-07-30 12:16:37  来源:  作者:

数据库的每一个知识点真要详细介绍的话都可以写成一本小册子,索引也不例外,但没那个必要。作为数据分析师或非数据库开发人员,所需了解的仅仅是下面这些知识点。

什么是索引


索引是为了加速对数据库表中数据行的检索而创建的一种分散的存储结构。这话有些人可能看着拗口,但如果将索引比喻成字典的目录那就很好理解了。借助对目录的了解可以加深我们对索引的理解。

数据分析所需了解的索引知识,一文带你纵览全貌

 

上表所列的是二者的共性特点,理解这些后就对索引的优缺点有了一个大致的认识。

索引原理


索引按照存储结构类型可主要分为Btree(也称B树)和Hash两大类型,其中Btree最为常用。MySQL数据库默认的引擎是InnoDB引擎,该引擎的表默认创建的是Btree索引。所以,主要掌握该索引就够了。

Btree是树结构索引,它的原理就是通过为表创建树形状的存储结构从而加快查询效率。它经历了二叉树、平衡树、B-树、B+树的优化历程。掌握了这一变化历程,也就掌握了B树索引的原理。

我们以斐波那契数列的前8位数[1,2,3,5,8,13,21]作为索引值,看看不同树结构下会是怎样的存储结构。

(1)二叉树

下图的存储结构就是二叉树,按照这个结构,我们查询某一个数字最多只需要5次,也就是树的高度。

数据分析所需了解的索引知识,一文带你纵览全貌

 

二叉树具有如下特点:

  • 每个结点都包含一个元素以及n个子树,0≤n≤2;
  • 左子树的值要小于父结点,右子树的值要大于父结点。

但二叉树存在着一个缺点,随着后续的数字添加进来,会全部添加到右子树,该树就会严重右偏,退化成差不多一个链表了,查询效率也就大大降低了。

(2)平衡树

平衡树是一种特殊的二叉树,它是为了解决二叉树偏科的问题而诞生的。它除了具备二叉树的两个特性外,还具有左右两个子树高度差不超过1的特性,并且左右两个子树都是一棵平衡二叉树。

数据分析所需了解的索引知识,一文带你纵览全貌

 

但平衡树中每个节点只能有一个值,在数据量大的情况下会需要多个节点,树的深度很很大,这就会大量增加和磁盘的IO次数,影响查询性能。

(3)B-树

B-树的节点就可以不止有一个数了,除了有键值,还存有数据。相比平衡树,它的形状属于更矮更胖,与磁盘的IO次数就会大大降低。

数据分析所需了解的索引知识,一文带你纵览全貌

 

但也正是由于节点中包含了数据,导致每次从磁盘读入到内存的键值数就会降低,在这种情形下还是会一定程度增加磁盘的IO次数,从而影响查询效率。

(4)B+树

B+树是对B-树的优化,所有的非叶子节点只存储键值信息,所有数据都存在叶子节点中,叶子节点之间都有一个链指针。

数据分析所需了解的索引知识,一文带你纵览全貌

 

由于数据全部存储在叶子节点中,非叶子节点只包含键值,每次读入内存的键值相对B-树来说就会增加,从而降低磁盘IO次数、提升查询效率。

这也是为什么目前索引均主要是采用B+树结构的原因。

索引类型


索引一般可分为普通索引、唯一索引、主键索引、组合索引和全文索引五类。

(1)普通索引

这是最基本的索引,没有任何限制,如下是常用的普通索引增删查改方式。

create index indexname on test_one(column_one);--建立索引
alter table test_one add index indexname(column_one);--建立索引
drop index indexname on test_one;--删除索引
show index from test_one;--查看表的索引
select * from information_schema.statistics where table_schema='test_one';--查看数据库的索引

(2)唯一索引

与普通索引类似,不同的就是索引列值必须唯一,但允许有空值。例如,可以对用户的身份证号码字段建立唯一索引。关于它的相关语句就是需要添加unique字段,仅以创建为例,其它以此类推。

create unique index indexname on test_one(column_one);--建立索引

(3)主键索引

主键索引也称聚集索引,它与其它索引的区别在于其叶子节点存放的数据是一整行数据,而其它索引存放的只是具体的某一个数据。

如果表在创建时未定义主键,MySQL会取第一个唯一索引而且只含非空的列作为主键,并用它作为聚集索引。如果没有这样的列,就会就自动产生一个这样的ID值,它有六个字节,而且是隐藏的,使其作为聚集索引。当然,在表创建好之后,也可通过指定主键来创建主键索引。

alter table test_one add primary key(column_one);

(4)组合索引

这是指在多个字段上创建的索引,但要注意只有在查询条件中使用了创建索引时的第一个字段,组合索引才会被使用。

alter table test_one add index indexname(column_one,column_two);

(5)全文索引

全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。例如,对备注信息就可以建立全文索引。

alter table test_one add fulltext indexname(column_one);

注意事项


数据分析师更多地是在写查询SQL时使用索引,这时需注意以下这些细节:

  • 以%开头的like查询无法使用索引;
  • 数据类型出现隐式转换时无法使用索引;
  • 不满足最左原则的复合索引查询无法使用索引;
  • or分隔开的条件中若有一列没有索引,则涉及到的索引都无法使用;
  • 在索引列使用函数或进行运算的查询无法使用索引;
  • not in和<>的查询无法使用索引。

结语


文中所介绍的索引知识点,对于数据分析师了解索引内容而言是足够了的。但也毕竟只是在广度上做了介绍,就有如限定了考试范围,而在有些地方的深度介绍还不够,这就需要每个人结合自身实际情况去查漏补缺了!



Tags:数据分析 索引   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
数据库的每一个知识点真要详细介绍的话都可以写成一本小册子,索引也不例外,但没那个必要。作为数据分析师或非数据库开发人员,所需了解的仅仅是下面这些知识点。什么是索引索引...【详细内容】
2020-07-30  Tags: 数据分析 索引  点击:(87)  评论:(0)  加入收藏
▌简易百科推荐
张欣安科瑞电气股份有限公司 上海嘉定 201801 摘要:随着电力行业各系统接入,海量数据涌现,如何利用电网信息化中大量数据,对客户需求进行判断分析,服务于营销链条,提升企业市场竞...【详细内容】
2021-12-14  安科瑞张欣    Tags:大数据   点击:(9)  评论:(0)  加入收藏
1、什么是数据分析结合分析工具,运用数据分析思维,分析庞杂数据信息,为业务赋能。 2、数据分析师工作的核心流程:(1)界定问题:明确具体问题是什么;●what 发生了什么(是什么)●why 为...【详细内容】
2021-12-01  逆风北极光    Tags:大数据   点击:(25)  评论:(0)  加入收藏
在实际工作中,我们经常需要整理各个业务部门发来的数据。不仅分散,而且数据量大、格式多。单是从不同地方汇总整理这些原始数据就花了大量的时间,更不用说还要把有效的数据收集...【详细内容】
2021-11-30  百数    Tags:数据   点击:(21)  评论:(0)  加入收藏
数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出。密码技术,是实现数据安全最经济、最有效、最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环...【详细内容】
2021-11-26  炼石网络    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
导读:网易大数据平台的底层数据查询引擎,选用了Impala作为OLAP查询引擎,不但支撑了网易大数据的交互式查询与自助分析,还为外部客户提供了商业化的产品与服务。今天将为大家分享...【详细内容】
2021-11-26  DataFunTalk    Tags:大数据   点击:(15)  评论:(0)  加入收藏
导读:数据挖掘是一种发现知识的手段。数据挖掘要求数据分析师通过合理的方法,从数据中获取与挖掘项目相关的知识。作者:赵仁乾 田建中 叶本华 常国珍来源:华章科技数据挖掘是一...【详细内容】
2021-11-23  华章科技  今日头条  Tags:数据挖掘   点击:(20)  评论:(0)  加入收藏
今天再给大家分享一个不错的可视化大屏分析平台模板DataColour。 data-colour 可视化分析平台采用前后端分离模式,后端架构设计采用微服务架构模式。 前端技术:Angularjs、Jq...【详细内容】
2021-11-04  web前端进阶    Tags:DashboardClient   点击:(39)  评论:(0)  加入收藏
在Kubernetes已经成了事实上的容器编排标准之下,微服务的部署变得非常容易。但随着微服务规模的扩大,服务治理带来的挑战也会越来越大。在这样的背景下出现了服务可观测性(obs...【详细内容】
2021-11-02  大数据推荐杂谈    Tags:Prometheus   点击:(40)  评论:(0)  加入收藏
同一产品对老客户的要价竟然比新客户要高?这是当下“大数据杀熟”的直接结果。近年来,随着平台经济的蓬勃发展,大数据在为用户服务之外,也引发了多种不合理现象。为了有效遏制“...【详细内容】
2021-10-29    海外网   Tags:大数据   点击:(31)  评论:(0)  加入收藏
本人03年开始从事贸易行业,多年来一直致力于外贸获客和跨境电商选品等领域,最近有些小伙伴反馈海关数据演示的都挺好为啥用起来不是那么回事?大家看到数据时关注的有产品、采购...【详细内容】
2021-10-28  QD云龙    Tags:数据   点击:(33)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条