首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

VLOOKUP函数不能查找最后一个怎么办?

学习Excel技术,关注微信公众号: excelperfect 标签:Excel公式练习 VLOOKUP函数是使用最多的Excel函数之一,能够查找到第一个并返回对应的,然而,如果查找的项有多个,如何查找到最后一个呢...举个例子,如下图1所示的数据,要查找“员工15”的最后一项工作任务。 图1 下面列举几种常用的方法,供大家参考。 方法1:找到要查找的最后一项任务所在的位置,并获取其。...先将单元格区域A2:A16中的与要查找(在单元格E2中)相比较,最后相同的肯定其对应的行号最大。...MAX({0;0;0;0;0;0;0;9;10;11;0;0;0;0;0}) 得到: 11 即为所查找对应的最后一项所在位置。...或者,数组公式: =INDIRECT("B"&LARGE(IF(A1:A16=E2,ROW(A1:A16)),1)) 找到要获取的的单元格位置,使用INDIRECT函数取其

2K20

阿里二面:MySQL索引是怎么支撑千万级表的快速查找

也就是说,它通过把关键码映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。...对目标值进行hash运算得到hash和数据磁盘指针地址保存到hash表,这样就达到快速定位数据位置。 缺点:精确查找十分快速,但范围查找就碰壁了。...现在来看下,要查找一条数据,怎么查? 如select * from user where id=5; 这里id是主键,我们通过这棵B+树来查找,首先找到根页,你怎么知道user表的根页在哪呢?...number=5的页中查找,同样通过二分查询法即可找到id=5的记录....在查找数据时一次页的查找代表一次IO,所以通过主键索引查询通常只需要1-3次IO操作即可查找到数据。 怎么得到InnoDB主键索引B+树的高度?

97400

Kylin、Druid、ClickHouse 核心技术对比

数据查找的时候通过树形结构定位到节点,节点内部数据是按照rowkey有序的,可以通过二分查找快速定位到目标。 ?...pv的索引 通过索引在pv列中查找到相应的行,并做agg 后续计算 Druid小结:Druid适用于聚合查询场景但是不适合有超高基维度的场景;存储全维度group-by后的数据,相当于只存储了KYLIN...Clickhouse索引的大致思路是:首先选取部分列作为索引列,整个数据文件的数据按照索引列有序,这点类似MySQL的联合索引;其次将排序后的数据每隔8194行选取出一行,记录其索引和序号,注意这里的序号不是行号...mark's number集合(即数据block集合) 在上一步骤中的 block中,在date和city列中查找对应的行号集合,并做交集,确认行号集合 将行号转换为mark's number 和...后续计算 该实例中包含了对于列的正反两个方向的查找过程。反向:查找date=toDate(2020-01-01) and city=’bj’数据的行号;正向:根据行号查找action列的

1.8K20

Klin、Druid、ClickHouse核心技术对比

数据查找的时候通过树形结构定位到节点,节点内部数据是按照rowkey有序的,可以通过二分查找快速定位到目标。 ?...pv的索引 通过索引在pv列中查找到相应的行,并做agg 后续计算 DRUID小结:Druid适用于聚合查询场景但是不适合有超高基维度的场景;存储全维度group-by后的数据,相当于只存储了KYLIN...Clickhouse索引的大致思路是: 首先选取部分列作为索引列,整个数据文件的数据按照索引列有序,这点类似MySQL的联合索引; 其次将排序后的数据每隔8194行选取出一行,记录其索引和序号,注意这里的序号不是行号...mark’s number集合(即数据block集合) 在上一步骤中的 block中,在date和city列中查找对应的行号集合,并做交集,确认行号集合 将行号转换为mark’s number 和...后续计算 该实例中包含了对于列的正反两个方向的查找过程。反向:查找date=toDate(2020-01-01) and city=’bj’数据的行号;正向:根据行号查找action列的

1.4K10

Kylin、Druid、ClickHouse该如何选择?

数据查找的时候通过树形结构定位到节点,节点内部数据是按照rowkey有序的,可以通过二分查找快速定位到目标。 3....pv的索引 通过索引在pv列中查找到相应的行,并做agg 后续计算 3....Clickhouse索引的大致思路是: 首先选取部分列作为索引列,整个数据文件的数据按照索引列有序,这点类似MySQL的联合索引 其次将排序后的数据每隔8194行选取出一行,记录其索引和序号,注意这里的序号不是行号...mark’s number集合(即数据block集合) 在上一步骤中的block中,在date和city列中查找对应的行号集合,并做交集,确认行号集合 将行号转换为mark’s number和offset...后续计算 该实例中包含了对于列的正反两个方向的查找过程。 反向:查找date=toDate(2020-01-01) and city=’bj’数据的行号; 正向:根据行号查找action列的

1.1K20

和面试官聊了半小时的MySQL索引!

下面是本文的核心内容: 常见索引类型(实现层面) 索引种类(应用层面) 聚簇索引与非聚簇索引 覆盖索引 最佳索引使用策略 1.常见索引类型(实现层面) 首先不谈Mysql怎么实现索引的,先马后炮一下...并且叶子节点之间以链表的形式相互关联,所以我们只需从最左的链表遍历的话即可查找所有的,最常见的用途就是范围查找,而B树则不满足这范围查找,又或者说实现特别复杂,所以Mysql最终选择了使用B+树实现这一功能...特点跟单列索引一样,不同之处在于他的排序,如果第一个字段相同时会按第二个索引字段排序 如何通过B-tree快速查找数据?...如下方图,有个hash索引key(name) 当我们执行 mysql> select * from User where name='张三'; 时怎么利用hash索引快速查找的?...第一步,计算出hash,hash(张三) = 1287 第二步,定位行号,比如key=1287 对应的行号为3 第三步,找到指定行并且比较name列是否为张三做个校验 2.常见索引种类(应用层面)

56220

图解 MySQL 索引,写得实在太好了!

常见索引类型(实现层面) 索引种类(应用层面) 聚簇索引与非聚簇索引 覆盖索引 最佳索引使用策略 1.常见索引类型(实现层面) 首先不谈Mysql怎么实现索引的,先马后炮一下,如果让我们来设计数据库的索引...从上面图可知B+树的叶子节点存放了所有的索引,并且叶子结点之间以链表的形式相互关联,所以我们只需从最左的链表遍历的话即可查找所有的,最常见的用途就是范围查找,而B树则不满足这范围查找,又或者说实现特别复杂...如何通过B-tree快速查找数据? ?...当我们执行 mysql> select * from User where name='张三'; 时怎么利用hash索引快速查找的?...第一步,计算出hash,hash(张三) = 1287 第二步,定位行号,比如key=1287 对应的行号为3 第三步,找到指定行并且比较name列是否为张三做个校验 ?

93620

索引-mysql详解(三)

于是我们如何通过索引目录来查找呢,因为前面说了页分裂是从小打大排序好的,所以 每个目录key都是最小的主键值,value则就是页码,通过key来查找对应的页码找到对应存储数据的页。...这时候 查不到我们需要的怎么办,用查询到的主键来回表查询。...我们前面说了innodb的聚簇索引是索引即数据,但myISAM是不同的,他是把索引和数据分开存储,myISAM有两个文件,数据文件 和 索引文件,数据文件即是我们存储的真实数据等,索引则会存放在索引文件里,先通过索引找到对应的行号...,再通过行号去找对应的记录,意味着myISAM都是需要回表查询的。...联合索引范围查找的时候,最左边的列是可以使用索引查询的,但如果第二个索引需要使用到的话,最左边的列则不可以使用范围查询,需要精确,因为只有相同的才可以之后再排序。

36320

B+树(5)myISAM简介 --mysql从入门到精通(十七)

二级索引的内节点保证一致性,存入列的时候加个主键。...B+树(4)联合索引 --mysql从入门到精通(十六) myISAM简介 我们知道了innoDB搜索引擎的是索引即是数据,分为列表索引树,和聚簇索引树,聚簇索引那颗b+树索引即是数据,所有的用户记录数都存在叶子节点...myISAM会吧用户记录数据全部放在一个文件里,称为数据文件,这个文件不会划分若干页,有多少记录就往里面塞,通过每一行对应的行号快速访问,因为随意塞入,不会按主键大小排序,不能用二分查找查找。...之后会吧索引信息存储到另一个索引文件里,myISAM会单独为表的主键创建索引,只不过在叶子节点存储的不是用户记录数据,而是主键+行号,意味着找到到对应行号之后,会用行号去数据文件里再次找全部数据。...有需要的话,也可以建立二级索引或者联合索引,只是叶子节点存放的是列+行号。 创建索引和删除索引: 说了那么多理论知识,那如何实战呢?

60321

带你学MySQL系列 | 奇怪的null,我该怎么办?看看我给你的总结!

, sum(math) 数学总分, sum(english) 外语总分 from test_null 结果如下: 3.空格、空和null,我们应该怎么判断呢?...不好理解的其实是空和null,空相当于一个杯子是真空状态的,什么也没有,null表示的杯子中有空气。 MySQL中,null是未知的,且占用空间的。...null使得索引、索引统计和都更加复杂,并且影响优化器的判断。 空('')是不占用空间的,注意空的’'之间是没有空格的。...对于timestamp数据类型,如果插入null,则出现的是当前系统时间。插入空,则会出现0000-00-00 00:00:00。...2)出现了null,我应该怎么办? 通过上面的分析我们已经知道了,当表中存在null,会导致加、减、乘、除运算失效。那么我们怎么处理这些null比较好呢?

35720

MySql学习——MySql中的索引详解

举例说明:如果查找一本书中的某个特定主题,一般会先看书的目录(类似索引),找到对应页面。在MySQL,存储引擎采用类似的方法使用索引,高效获取查找的数据。...使用二级索引与聚簇索引时的区别:由于聚簇索引即数据,所以在使用时可以直接找到数据信息,而二级索引由于只包含索引(上图的c2)和聚簇索引(主键)信息,所以根据二级索引查找到信息时,必须再根据主键值去聚簇索引中再查找一遍完整的用户记录...MyISAM会单独为表的主键创建一个索引,只不过在索引的叶子节点中存储的不是完整的用户记录,而是主键值 + 行号的组合。也就是先通过索引找到对应的行号,再通过行号去找对应的记录!...所有记录都是按照索引列的从小到大的顺序排好序的,所以这极大的方便我们查找索引列的在某个范围内的记录。...总结 以上是最近学习MySql索引相关内容后的一个简单的总结 参考 《MySql怎么运行的》 MySQL:索引详解

1.3K30

MySql学习——MySql中的索引详解

举例说明:如果查找一本书中的某个特定主题,一般会先看书的目录(类似索引),找到对应页面。在MySQL,存储引擎采用类似的方法使用索引,高效获取查找的数据。...使用二级索引与聚簇索引时的区别:由于聚簇索引即数据,所以在使用时可以直接找到数据信息,而二级索引由于只包含索引(上图的c2)和聚簇索引(主键)信息,所以根据二级索引查找到信息时,必须再根据主键值去聚簇索引中再查找一遍完整的用户记录...MyISAM会单独为表的主键创建一个索引,只不过在索引的叶子节点中存储的不是完整的用户记录,而是主键值 + 行号的组合。也就是先通过索引找到对应的行号,再通过行号去找对应的记录!...所有记录都是按照索引列的从小到大的顺序排好序的,所以这极大的方便我们查找索引列的在某个范围内的记录。...总结 以上是最近学习MySql索引相关内容后的一个简单的总结 参考 《MySql怎么运行的》 MySQL:索引详解 socialShare('.social-share', { sites

2.1K20

MySQL——索引实现原理

MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。...可以看出MyISAM的索引文件仅仅保存数据记录的行号,然后通过行号回表查询需要的数据。 那col2列上的索引(辅助索引)又会怎么样呢?有什么特别之处吗?...如果我们在col2上建立一个辅助索引,则此索引的结构如下图所示: 因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的,然后以data域的为地址...InnoDB的二级索引的叶子节点存储的不是行号(行指针),而是主键列。这种策略的缺点是二级索引需要两次索引查找,第一次在二级索引中查找主键,第二次在聚簇索引中通过主键查找需要的数据行。...画外音:可以通过我们前面提到过的索引覆盖来避免回表查询,这样就只需要一次回表查询,对于InnoDB而言,就是只需要一次索引查找就可以查询到需要的数据记录,因为需要的数据记录已经被索引到二级索引中,直接就可以找到

67221

图解:基于B+树索引结构,MySQL可以这么优化

首先通过索引可以很大程度的提高检索效率,这个就不解释了 关于B+树的相关知识和应用可以点击传送门 图解:深入理解MySQL索引底层数据结构与算法 图解:什么是B-树、B+树、B*树 1....查询优化器根据统计信息 估算 SQL 要查找到结果集需要扫描读取的数据行数 这个非常直观显示 SQL 的效率好坏 原则上 rows 越少越好 extra 额外信息 Using Filesort...建立自增整数主键 首先建表必须建立一个主键 在InnoDB引擎中,只有主键索引才是聚集索引 也就是说只有主键索引的的叶子节点才挂接的有数据 辅助索引的叶子节点只挂接主键的 然后再用主键值通过主键索引检索具体的数据内容...中InnoDB引擎是要求表必须有一个主键的 MySQL会将选一个不包含null的字段将它当做主键,并建立索引 如果连这样的字段都没有,就会使用行号生成一个聚集索引,把它当做主键,这个行号大小为6bytes...合理建立和使用联合索引 实际当中,我们的业务往往不会仅仅要求通过某一个字段进行数据的查询和过滤 联合索引顾名思义,就是多个字段共同建立索引 具体怎么建立和使用联合索引呢?

1.8K20

快速查询的秘籍—B+树索引下

1、页中的数据根据主键的大小形成单向链表,分成不同的组,每个组中主键最大记录在页内的偏移量当作槽存在页目录中,其中infimum为头,supremum为尾,通过二分法可快速查找。...这就是聚簇索引,而且mysql会主动帮我们创建,其次所有的记录存放在叶子节点,正所谓索引即数据,数据即索引。 二级索引 如果我们想提高其他的列作为查询条件的性能怎么办呢?...那么是怎么查询呢?以c2=4举例。 首先根据目录项查询第一条c2=4的目录项所在的页。 在B+树中叶子节点查询出符合要求的c2与主键的。...有一点需要注意,联合索引在创建时,优先根据c2列排序,当c2的相同时,在根据c3排序。其实看到这里大家就知道了,联合索引应该怎么去用才会命中索引了。...2、把表的索引信息单独存到索引文件中,每个主键都会创建一个索引信息,然而树的叶子节点存储的是索引+行号信息。在查询时根据索引找到行号,在根据行号找到数据。

31710

聚簇索引及 InnoDB 与 MyISAM 数据分布对比

由于索引和数据保存在同一个 B-Tree 中,查找索引的同时也就找到了对应的数据,因此从聚簇索引中获取数据通常比在非聚簇索引中查找数据要快 3....MyISAM 数据分布 MyISAM 数据分布非常简单,数据按插入顺序存储在磁盘上,由于每行数据都是定长的,所以 MyISAM 可以根据行号迅速跳过相应的字节数定位需要查找的数据。...这种分布方式很容易创建索引,在索引 B+ 树的叶子节点上,每个节点都是一个-行号的键值对,通过查找,同时也就找到了相应的行号通过上述跳过相应字节数就可以快速定位数据了。...对于二级索引,与 MyISAM 不同,叶子节点键值对的并不是行号而是主键,通过索引找到主键后,再通过主键聚簇索引找到相应的数据。...mysql 5.1.22 之后,mysql 通过预判的方式生成 AUTO_INCREMENT 主键,也就是说,如果某次 insert 会将 AUTO_INCREMENT 主键增加到 3,则在 insert

30620
领券