妈呀,自己查找,还要根据查找id找到对应string,比较坑。于是就顺带练手写了个python脚本来处理这个问题。当然编码相对不太规范,异常处理也没做。由于lz好久没写过python脚本了,相当生疏。...几乎是边查文档编写,记录写编写过程: 查找目录下所有java文件 查找Java文件中含有Toast相关的行 在对应行中找出对应的id 使用id在String中查找对应的toast提示信息。...1. 查找目录下所有java文件 这个我是直接copy网上递归遍历的,省略。...查找Java文件中的Toast 需要找出Toast的特征,项目中有两个Toast类 BannerTips和ToastUtils 两个类。 1.先代码过滤对应的行。...在对应行中找出对应的id 使用id在String中查找对应的toast提示信息。 最后去重。 最后一个比较简单,可以自己写,也可以解析下xml写。
前言 相信在此之前,很多人都只是记忆,没去理解,只知道count(*)、count(1)包括了所有行,在统计结果的时候,不会忽略列值为NULL,count(列名)只统计列名那一列,在统计结果的时候,...会忽略列值为NULL的记录。 ...(索引列+主键id)是少于聚集索引(所有列)记录的,所以同样数量的非聚集索引记录比聚集索引记录占用更少的存储空间。...---- 4. count(1),count(id),count(非索引列),count(二级索引列)的分析 来看看count(1) SELECT COUNT(1) FROM demo_info; 执行计划和...,所以其实读取任意一个索引中的记录都可以获取到id字段,此时优化器也会选择占用存储空间最小的那个索引来执行查询。
(innodb块大小为16k,操作系统一页=4k) 有序存储 索引有序 + 磁盘内有序,加速查找时间 且 更好的支持顺序查找。 聚簇索引 这是数据组织方式。...有 j 个孩子的非叶节点恰好有 j-1 个关键码,关键码按递增次序排序。 ? B树存在磁盘中,我们想要查找29,查找过程: 1. 根据根结点找到文件目录的根磁盘块1,将其中信息导入内存。...【磁盘IO操作3次】 B+ 相对B树的不同特性: 非叶子节点的值会以最大或最小值出现在其子节点中,即叶子节点包含所有元素。...前缀索引查询(注意选择性把握) 选择性指不重复的索引值和数据表的记录总数的比值。选择性最高时,即所有键不重复时选择性为1。...使用索引查询数据时,索引节点和数据被一起载入内存,不需要根据指针再进行一次IO读取。 无需维护辅助索引。当出现数据页分裂时,无需更新索引中的数据块指针。 非聚簇索引图: ?
子查询和UNION:对于复合查询,id值的排序取决于执行计划中步骤的执行顺序。 id的含义 主查询的id为1:在复合查询中,主查询的id通常为1,表示最外层的查询。...const:常量 表示通过索引一次就找到了,常用于等值比较。例如,在主键或唯一索引上进行等值查询。 eq_ref:唯一索引查找 类似于const,区别在于使用的是非唯一索引。...ref:非唯一索引查找 表示使用非唯一索引进行等值比较。例如,通过普通索引查找某个值。 range:范围查找 表示使用索引进行范围查找,通常出现在带有BETWEEN、IN、>,<等条件的查询中。...key_len值为1的情况 如果key_len的值是1,表示使用的是单列索引,索引列的长度为1个字节。 多列索引的情况 如果使用的是多列索引,key_len将显示这些列长度之和。...例如,如果有一个包含两个INT类型列的索引,且这两列的长度分别为4个字节,那么key_len将显示8。
: 列名,列的别名,表达式, 列出现在select关键字后的 顺序(列号); 3) order by后可以跟多列, 表示先按第一列排序, 如第一列有相同值再按...last note: 出现在order by子句之后的列,不一定出现在select子句中。...5) 几种常见的操作符: 1》逻辑比较操作符 = > = ^= 需求:查找工资大于1000的所有员工的last_name和工资。...限定内容为1到4。 in (1,2,4): 限定内容为1,2,4。...is null:对null值操作特定义的操作符,不能使用= 3》逻辑操作符 当条件有多个的时候使用 and:且逻辑 or:或逻辑 注意:and逻辑比or逻辑要高 not:非逻辑 4) 需求: 1.查找员工
查询语句只扫描一次索引树即获得了目标数据,效率很高,一般是通过索引列查询主键或查询与索引列建有联合索引的列 Using where Using index 无法直接通过索引查找来查询到符合条件的数据,...其次,使用索引的非前导列age作为条件进行查询: EXPLAIN SELECT name FROM student WHERE age=17 8、ALL 全表扫描,MySQL会遍历所有行去查找结果,这种类型是效率最差的类型...1.8 ref、rows、filtered ref:显示了在 key 列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),字段名(例:student.id)。...例如,class_student表中,index_s_c_id这个索引建立在s_id和c_id上,这个索引称之为复合索引,而s_id为index_s_c_id索引的前导列。...下面看一下Extra中的几个重要的值: 1、Using index 释义: 这种情况意味着查询语句只扫描一次索引树即获得了目标数据,效率很高。
如果id相同,则认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行 select_type(JSON名:无) SELECT 类型,可以是下表显示中的任何类型。...使用的索引信息不会出现在 Extra列中。 ALL 全表扫描,性能最糟,可以通过添加索引来避免。 EXPLAIN Extra 详解 一下列表表示可能出现在 Extra中的值。...在这种情况下,MySQL 使用t1.id列的值查找t2表中的行 。如果找到匹配的行,且知道 t2.id不可能是 NULL,那么将不在继续查找t2表中剩余id相同的行。...如果查询使用的列值仅仅是一个简单索引的部分值,则会使用这种策略来优化查询。对于innoDB数据库中的表有一个自定义的聚簇索引,该索引能够起作用,即使是Using index并没有出现在Extra列中。...也就是说,在 EXPLAIN输出记录中,从已经查找过的表中将输出的列缓存下来,并在需要时批量的找出与当前数据对比,这时就会出现 Usingjoin buffer。
(1, 'Paul', 32, 'USA', 20000.0); -- 为所有列添加值 insert into company (ID, NAME, AGE, ADDRESS,SALARY) VALUES...(1)AND 运算符: 就是且,要同时满足所有条件。...LIKE '_2%3' 查找第二位为 2,且以 3 结尾的任意值 WHERE SALARY LIKE '2___3' 查找长度为 5 位数,且以 2 开头以 3 结尾的任意值 (2)实例: like_company.txt...查找以 2 开头,且长度至少为 3 个字符的任意值 WHERE SALARY GLOB '*2' 查找以 2 结尾的任意值 WHERE SALARY GLOB '?...2*3' 查找第二位为 2,且以 3 结尾的任意值 WHERE SALARY GLOB '2???
,顺序记录变长字段最大值,varchar(20) NULL 标志:所有字段是不是为null,如果存在null,innodb用null标注所有的字段是否为空 在创建表的时候会统计所有字段类型的大小,除开blobs...image.png 我们知道innodb 我们没有设置主键,会将定义表中的唯一索引作为主键,否则自动生成row_id 作为主键 拓展:innodb表中三个隐藏列:Row_id,transcation_id...如果同时出现Using where,表明索引被用来执行索引键值的查找。如果没有同时出现Using where,表示索引用来读取数据而非执行查找动作。...image.png 我们在查询的过程中,sql优化器可以对我们的sql语句进行优化,不一定走索引,当然我们也可以强制设置为走索引; 例如:test id a b c 1 1 1 2 2 1 1 1 3...and b = 1 and c = 1 and id = 1; 走索引,主键默认添加在辅助索引中 使用不等于查询, 列参与了数学运算或者函数 在字符串like时左边是通配符.类似于'%aaa'.
为了方便理解,我们如下有那个等值搜索条件为对一个列精确匹配的情况,所谓精确匹配就是如下: select column from table where cloumn=xxx; 在一个页中的查找 假如目前表中的记录比较少...,所有的记录都可以存放到一个页中,在查找数据的时候可以根据搜索条件的不同分为两种情况: 01 主键为搜索条件 这个查找过程基本很明显,可以直接在页目录中使用二分查找法快速定位到对应的位置,然而再遍历该位置对应分组中的数据便可以快速找到指定的数据...2 个子节点; 所有叶子节点都出现在同一层,叶子节点不包含任何关键字信息; 有 k 个子节点的非终端节点 (叶子节点) 恰好包含有 k-1 个关键字。...B- 树的特性: 关键字集合分布在整颗树中; 任何一个关键字出现且只出现在一个结点中; 搜索有可能在非叶子结点结束; 其搜索性能等价于在关键字全集内做一次二分查找; 自动层次控制; mysql 的索引是...; 所有关键字都在叶子结点出现; 关键区别是: B + 树只有达到叶子结点才命中(B - 树可以在非叶子结点命中),其性能也等价于在关键字全集做一次二分查找; B + 树每个叶子节点都有双向指针; B
默认值为 0.1。 缺点:如果设置为非常高的值可能会导致许多假阴性,因为并非在所有细胞中都检测到所有基因(即使它被表达) 您可以使用这些参数的任意组合,具体取决于您想要的严格程度。...请注意,为每个组(在我们的示例中为 Ctrl 和 Stim)计算相同的统计数据集,最后两列对应于两个组的组合 p 值。...研究已经确定肥大细胞特征显着富含丝氨酸蛋白酶,例如 TPSAB1 和 TPSB2,这两种蛋白酶都出现在我们的保守标记列表中。...另一个不是丝氨酸蛋白酶,而是已知的肥大细胞特异性基因并出现在我们列表中的基因是 FCER1A(编码 IgE 受体的一个亚基)。...此外,我们看到 GATA1 和 GATA2 出现在我们的列表中,它们不是肥大细胞标记基因,而是在肥大细胞中大量表达,并且是调节各种肥大细胞特异性基因的已知转录因子。 6.4.
默认值为 0.1。缺点:如果设置为非常高的值可能会导致许多假阴性,因为并非在所有细胞中都检测到所有基因(即使它被表达)您可以使用这些参数的任意组合,具体取决于您想要的严格程度。...请注意,为每个组(在我们的示例中为 Ctrl 和 Stim)计算相同的统计数据集,最后两列对应于两个组的组合 p 值。...研究已经确定肥大细胞特征显着富含丝氨酸蛋白酶,例如 TPSAB1 和 TPSB2,这两种蛋白酶都出现在我们的保守标记列表中。...另一个不是丝氨酸蛋白酶,而是已知的肥大细胞特异性基因并出现在我们列表中的基因是 FCER1A(编码 IgE 受体的一个亚基)。...此外,我们看到 GATA1 和 GATA2 出现在我们的列表中,它们不是肥大细胞标记基因,而是在肥大细胞中大量表达,并且是调节各种肥大细胞特异性基因的已知转录因子。6.4.
B-TREE B-树就是B树,多路搜索树,树高一层意味着多一次的磁盘I/O,下图是3阶B树 B树的特征: 关键字集合分布在整颗树中; 任何一个关键字出现且只出现在一个结点中; 搜索有可能在非叶子结点结束...; 其搜索性能等价于在关键字全集内做一次二分查找; 自动层次控制; B+TREE B+树是B-树的变体,也是一种多路搜索树 B+树的特征: 所有关键字都出现在叶子结点的链表中...因此,对于InnoDB表,我们一般定义主键为不可更新。 二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。...InnoDB辅助索引的访问需要两次索引查找,第一次从辅助索引树找到主键值,第二次根据主键值到主键索引树中找到对应的行数据。...如果只有一个关键词且使用了- ,会将这个当成错误操作,相当于没有查询关键词;如果有多个关键词,关键词集合中不全是负能符(~ -),那么-则强调不能出现。
>标签嵌套或者分组了 if (mappedStatement.isResultOrdered()) { //如果嵌套映射中没有该resultMap对象且上一次嵌套的resultMap...(String.valueOf(value)); //查找全局配置信息中是否有该嵌套的resultMap节点的id if (configuration.hasResultMap(discriminatedMapId...接口的实现类 if (Map.class.isAssignableFrom(resultMap.getType())) { //由结果集中的所有列名以及当前记录行的所有列值一起构成CacheKey...= null) { //遍历该列表 for (PendingRelation parent : parents) { //如果列表中的每一项不为null且上一次嵌套的resultMap...对象中该属性的值(metaObject与metaClass不同,metaClass保存了类的所有属性,方法;metaObject保存了对象所有属性 //的值) Object propertyValue
:ID值n的行的物化子查询结果。 4. partitions 给定表所使用的分区,未分区的表该值为NULL。 5. type 连接类型,即MySQL如何查找表中的行。...使用对索引的读取执行全表扫描,以按索引顺序查找数据行。 Uses index不会出现在Extra列中。...key列记录的索引中查找值所用的列或常量,即显示索引key使用了之前表的哪一列或常量。。...Using index 仅使用索引树中的信息从表中检索列信息,而不必进行其他查找以读取实际行。当查询仅使用属于单个索引的列时,可以使用此策略。...除非想返回表中的全部行,否则 如果查询中的Extra值不是 Using where且表联接类型为ALL或Index ,则查询中可能会有问题。
) 优化排序(在老版本MySQL会使用两次传输排序,即先读取行指针和需要排序的字段在内存中对其排序,然后再根据排序结果去读取数据行,而新版本采用的是单次传输排序,也就是一次读取所有的数据行,然后根据给定的列排序...所以二叉查找树的平均查找次数为(3 + 3 + 3 + 2 + 2 + 1) / 6 = 2.3次,而顺序查找的话,查找值为2的记录,仅需要1次,但查找值为8的记录则需要6次,所以顺序查找的平均查找次数为...假设B+Tree的高度为h,一次检索最多需要h-1次I/O(根节点常驻内存),复杂度O(h) = O(logmN)。... 1 当出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引。...优化这种查询一个最简单的办法就是尽可能的使用覆盖索引扫描,而不是查询所有的列。然后根据需要做一次关联查询再返回所有的列。对于偏移量很大时,这样做的效率会提升非常大。
) 优化排序(在老版本MySQL会使用两次传输排序,即先读取行指针和需要排序的字段在内存中对其排序,然后再根据排序结果去读取数据行,而新版本采用的是单次传输排序,也就是一次读取所有的数据行,然后根据给定的列排序...所以二叉查找树的平均查找次数为(3 + 3 + 3 + 2 + 2 + 1) / 6 = 2.3次,而顺序查找的话,查找值为2的记录,仅需要1次,但查找值为8的记录则需要6次,所以顺序查找的平均查找次数为...假设B+Tree的高度为h,一次检索最多需要h-1I/O(根节点常驻内存),复杂度O(h) = O(\log_{M}N)。...当出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引。...优化这种查询一个最简单的办法就是尽可能的使用覆盖索引扫描,而不是查询所有的列。然后根据需要做一次关联查询再返回所有的列。对于偏移量很大时,这样做的效率会提升非常大。
数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据列建立索引。 注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。 查询执行效率低,扫描过多数据行。...(等于系统表),这是const类型的特列,平时不会出现,这个也可以忽略不计 const (主键单行) > > 表示通过索引一次就找到了,const用于比较primary key或者unique索引...哪些列或常量被用于查找索引列上的值 rows 显示MySQL认为它执行查询时必须检查的行数。...如果同时出现using where,表明索引被用来执行索引键值的查找; 如果没有同时出现using where,表明索引只是用来读取数据而非利用索引执行查找。...'2', '2'), (1, 1, 3, 3, '3', '3'); 查询分类为1且评论大于1的情况下,浏览量最多的文章ID SQL语句 SELECT id FROM article
) 优化排序(在老版本MySQL会使用两次传输排序,即先读取行指针和需要排序的字段在内存中对其排序,然后再根据排序结果去读取数据行,而新版本采用的是单次传输排序,也就是一次读取所有的数据行,然后根据给定的列排序...所以二叉查找树的平均查找次数为(3 + 3 + 3 + 2 + 2 + 1) / 6 = 2.3次,而顺序查找的话,查找值为2的记录,仅需要1次,但查找值为8的记录则需要6次,所以顺序查找的平均查找次数为...假设B+Tree的高度为h,一次检索最多需要h-1I/O(根节点常驻内存),复杂度O(h)=O(logMN)。实际应用场景中,M通常较大,常常超过100,因此树的高度一般都比较小,通常不超过3。...1 当出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引。...优化这种查询一个最简单的办法就是尽可能的使用覆盖索引扫描,而不是查询所有的列。然后根据需要做一次关联查询再返回所有的列。对于偏移量很大时,这样做的效率会提升非常大。
;在所有组中,ID值越大,优先级越高,越先执行 二、select_type 示查询中每个select子句的类型 SIMPLE:简单的SELECT,不实用UNION或者子查询。...这也可以是以下值之一: :该行指的是id值为M和id值为N的并集。 :该行是指用于与该行的派生表结果id的值 N。...这是const连接类型的特例 const 该表最多只有一个匹配行,在查询开头读取。因为只有一行,所以优化器的其余部分可以将此行中列的值视为常量。 const表非常快,因为它们只读一次。...除了 system和 const类型之外,这是最好的连接类型。当连接使用索引的所有部分且索引是 索引PRIMARY KEY或UNIQUE NOT NULL索引时使用它。...仅索引扫描通常比ALL索引的大小通常小于表数据更快 。 使用索引中的读取执行全表扫描,以按索引顺序查找数据行。 Uses index没有出现在 Extra列中。
领取专属 10元无门槛券
手把手带您无忧上云