前言 这里强烈建议先熟悉influxsql的查询语句,可参考 Data exploration using InfluxQL 关于Select查询请求结果涉及到的一些数据结构 Series 定义 type...Values []interface{} } Row表示查询结果集中的每一行, 其中的Values表示是返回的Fields的集合 Iterator bufFloatIterator 定义 type bufFloatIterator...如果是按升级规则遍历,则遍历的结果是按Window从小到大排,但同一Window内部的多条Point,时间不一定是从小到大的。...中的Group by time fill(...), 在当前的interval的window中,如果没有查询到值,则使用相应的添充规则生成相应的值 具体可参见:group-by-time-intervals-and-fill...后会得到这个cursor,用来遍历查询结结果 定义: type Cursor interface { Scan(row *Row) bool // Stats returns the
select查询结果。...如何将查询的结果合并成一条记录插入到上面的数据表中呢?网上也没有确切的答案,摸索了很久,最后,终于在百般尝试下使用join进行横向拼接完成了我想要的功能!...)tmp4 join (select 2)tmp5 join (select 1)tmp6; 插入成功后,查询结果如下: select * from audit; +------------+-----...---------+--------+--------+----------+---------+---------+---------------------+ 拓展一下,如果我现在想让audit表中的...join (select 1)tmp6; 上面的语句和前面基本相同,只是增加了对tmpFlt和tmpAudit这两个子查询的重复查询,降低了时间效率。
SQL命令 SELECT(一) 从数据库中的一个或多个表中检索行。...在更复杂的查询中,SELECT可以检索列、聚合和非列数据,可以使用连接从多个表检索数据,也可以使用视图检索数据。 SELECT还可以用于从SQL函数、宿主变量或字面量返回值。...SELECT查询可以将返回这些非数据库值与从表或视图检索值结合起来。 当SELECT仅用于返回此类非数据库值时,FROM子句是可选的。 从SELECT查询返回的值称为结果集。...作为带有SELECT的INSERT的一部分。 INSERT语句可以使用SELECT将多行数据值插入到表中,从另一个表中选择数据。...它有两种形式: SELECT DISTINCT:为每个选择项值的唯一组合返回一行。 可以指定一个或多个选择项。
无法缓存结果的子查询,必须为外部查询的每一行重新计算 UNCACHEABLE UNION UNION中的第二个或以后的不可缓存的子查询。 ...3.subqueryN 当前行指向一个子查询的结果集。 type 连接类型。该列输出表示如何连接表。下面的类型表示从最好的到最坏的类型 1.system 该表只有一行(=系统表)。...-- 然后从结果集中取出name的集合,去匹配test1.name的结果。...然后对键进行排序,并按排序顺序检索行 Using index 仅使用索引树中的信息从表中检索列信息,而不必另外寻找读取实际行。当查询仅使用属于单个索引的列时,可以使用此策略。...Zero limit 查询有一个LIMIT 0子句,不能选择任何行。 Only index 这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。
derived 是 SQL 中 from 子句中包含的子查询被标记为该值,MySQL 会递归执行这些子查询,把结果放在临时表。下图展示了上述两种类型。...[select_type_subquery] dependent subquery:子查询中的第一个 select,取决于外侧的查询,一般是 in 中的子查询。...union result 从 union 表获取结果的 select。下图展示了 union 和 union result 的 SQL 案例。...[select_type_simple] eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常用于主键或唯一索引扫描。对于每个来自前边的表的行组合,从该表中读取一行。...ref ref 列表示使用其他表的哪个列或者常数来从表中选择行。
derived 是 SQL 中 from 子句中包含的子查询被标记为该值,MySQL 会递归执行这些子查询,把结果放在临时表。下图展示了上述两种类型。 ?...dependent subquery:子查询中的第一个 select,取决于外侧的查询,一般是 in 中的子查询。 ?...union result 从 union 表获取结果的 select。下图展示了 union 和 union result 的 SQL 案例。 ?...eq_ref 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常用于主键或唯一索引扫描。对于每个来自前边的表的行组合,从该表中读取一行。它是除了 const 类型外最好的连接类型。...ref ref 列表示使用其他表的哪个列或者常数来从表中选择行。如下图所示,从 t2 读取数据时,要判断 t2.id = t1.id,所以 ref 就是 mysql.t1.id ?
,id相同从上往下 select_type 查询类型 SIMPLE:查询中不包含子查询或者UNION PRIMARY 查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY SUBQUERY...在SELECT或WHERE列表中包含了子查询,该子查询被标记为SUBQUERY DEPEDENT SUBQUERY 依赖外部查询的子查询 DERIVD 在FROM列表中包含的子查询被标记为DERIVED...(衍生) UNION RESULT 从UNION表获取结果的SELECT被标记为UNION RESULT table 记录查询引用的表 TYPE: 访问类型,表示MySQL在表中找到所需行的方式 从最好到最差...不过它用于在子查询中没有唯一索引的情况下: value in (select key_column from single_table where some_expr) range:索引范围扫描,对索引的扫描开始于某一点...Index) 利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 Using where Using temporary 表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询
DISTINCT:将重复的行从VT8中移除,产生VT9 ORDER BY:将VT9中的行按ORDER BY子句中的列列表排序,生成一个有表(VC10) TOP:从VC10的开始处选择指定数量或比例的行,...3)DERIVED:派生表的SELECT(FROM子句的子查询) ? ? 4)UNION:UNION中的第二个或后面的SELECT语句 ? 5)UNION RESULT:UNION的结果。 ? ?...8.ref:显示使用哪个列或常数与key一起从表中选择行。 ref数据列给出了关联关系中另一个数据表里的数据列的名字。 9.rows:MySQL所认为的它在找到正确的结果之前必须扫描的记录数。...,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。...如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题 先说到这,下面一篇给大家总结下如何选择索引列以及使用索引的注意事项。
eq_ref:最多只会有一条匹配结果,一般是通过主键或者唯一键索引来访问;在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用...unique_subquery:子查询中的返回结果字段组合是主键或者唯一约束 index_merge:查询中同时使用两个(或更多)索引,然后对索引结果进行merge 之后再读取表数据; index_subquery...7、select_type 所使用的查询类型,判断是否是复杂语句,主要有以下这几种查询类型 DEPENDENT SUBQUERY:子查询中内层的第一个SELECT,依赖于外部查询的结果集;DEPENDENT...UNION:子查询中的UNION,且为UNION 中从第二个SELECT 开始的后面所有SELECT,同样依赖于外部查询的结果集;PRIMARY:子查询中的最外层查询,注意并不是主键查询;SIMPLE...,并用它来从表中返回行。
就是说mysql从第一个表中读取一行,在第二个表中找到匹配的一行,之后在找到第三个表,以此类推。 explain输出列包含如下信息: id 执行编号,标识select所属的行。...如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。...union,第一个就被标记为primary如果是union位于from中则标记为derived union result:用来从匿名临时表里检索结果的select被标记为union result dependent...关联优化器会为查询选择关联顺序,左侧深度优先 当from中有子查询的时候,表名是derivedN的形式,N指向子查询,也就是explain结果中的下一列 当有union result的时候,表名是union...ref ref列显示使用哪个列或常数与key一起从表中选择行。 rows rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。
EXPLAIN Output Columns 列名 说明 id 执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。...该值可能为NULL,如果这一行用来说明的是其他行的联合结果。...,第一个就被标记为primary如果是union位于from中则标记为derived union result 用来从匿名临时表里检索结果的select被标记为union result dependent...ref ref列显示使用哪个列或常数与key一起从表中选择行。 rows rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。...使用文件完成排序操作,这是可能是ordery by,group by语句的结果,这可能是一个CPU密集型的过程,可以通过选择合适的索引来改进性能,用索引来为查询结果排序。
EXPLAIN命令是查看查询优化器是如何决定执行查询的主要方法,从它的查询结果中可以知道一个SQL语句每一步是如何执行的,都经历了些什么,分为哪几步,有没有用到索引,哪些字段用到了什么样的索引,是否有一些可优化的地方等...UNION 第二个select出现在UNION之后,则被标记为UNION。 UNION RESULT 从UNION表获取结果的select。...从上面的举例对比中,也充分印证了索引的重要性。 3)range 只检索给定范围的行,使用一个索引来选择行。key列显示使用了那个索引。...本质是也是一种索引访问,它返回所有匹配某个单独值的行,然而它可能会找到多个符合条件的行,所以它属于查找和扫描的混合体。 此类型只有当使用非唯一索引或者唯一索引的非唯一性前缀时,才会发生。...这个数字是内嵌循环关联计划里的循环数,它并不是最终从表中读取出来的行数,而是MySQL为了找到符合查询的那些行而必须读取行的平均数,只能作为一个相对数来进行衡量。
type: 显示连接类型,显示查询使用了何种类型,按照从最佳到最坏类型排序 1.system:表中仅有一行(=系统表)这是const联结类型的一个特例。...因为只匹配一行数据,所以如果将主键置于where列表中,mysql能将该查询转换为一个常量 3.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...属于查找和扫描的混合体 5.range:只检索给定范围的行,使用一个索引来选择行。...从图中ID列,我们看到ID=2的先执行即先查询teacher表。 select_type simple 简单的select查询,查询中不包含子查询或者UNION; ?...union result:从union临时表检索结果的select。
explain select 1 union all select 1 ? UNION结果总是放在一个匿名临时表中,之后mysql将结果读取到临时表中。...用来从UNION的匿名临时表检索结果的SELECT被标记为UNION RESULT SUBQUERY 子查询的select,不再from子句中 DEPENDENT SUBQUERY The index...的查询结果不能被缓存:sql语句未验证 table 对应行正在访问哪一个表,表名或者别名,可能是临时表或者union合并结果集 1、如果是具体的表名,则表明从实际的物理表中获取数据,当然也可以是表的别名...例如,可以看到下面的查询中mysql选择的关联顺序不同于语句中所指定的顺序。...然后,它可能会找到多个符合条件的行,因此,它是查找和扫描的混合体。此类索引访问只有当使用非唯一索引或唯一索引的非唯一前缀时才发生。
outer plan 的记录在连接结果中只出现一次;当 outer plan 的行能找到多行匹配时,它会在连接结果中出现多次;那么如果 inner plan 在 join key 上满足唯一性属性,就不可能存在...TiDB 会在 expressionRewriter 的逻辑中做两类操作: 子查询展开 即直接执行子查询获得结果,再利用这个结果改写原本包含子查询的表达式;比如上述的非相关子查询,如果其返回的结果为一行记录...的全部数据从 TiKV 返回到 TiDB 中缓存,并作为 `t1` 扫描的过滤条件;如果将子查询转化为 inner join 的 inner plan ,我们可以更灵活地对 `t2` 选择访问方式,比如我们可以对...以上面查询为例,如果 `t1.pk` 不满足唯一性,假设 `t1` 有两条记录满足 `t1.pk = 1`,`t2` 只有一条记录 `{ (t2.a: 1, t2.b: 2) } `,那么该查询会输出两行结果...当 `t1.pk` 满足唯一性后,每一行 outer plan 的记录都对应连接结果中的一个分组,所以其聚合结果会和在子查询中的聚合结果一致,这也解释了为什么聚合提升后需要按照 `t1.pk` 做分组。
EXPLAIN Output Columns 列名 说明 id 执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。...,第一个就被标记为primary如果是union位于from中则标记为derived union result 用来从匿名临时表里检索结果的select被标记为union result dependent...ref ref列显示使用哪个列或常数与key一起从表中选择行。 rows rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。...使用文件完成排序操作,这是可能是ordery by,group by语句的结果,这可能是一个CPU密集型的过程,可以通过选择合适的索引来改进性能,用索引来为查询结果排序。...Using index 说明查询是覆盖了索引的,不需要读取数据文件,从索引树(索引文件)中即可获得信息。
下面分别对EXPLAIN命令结果的每一列进行说明: select_type:表示SELECT的类型,常见的取值有: 类型 说明 SIMPLE 简单表,不使用表连接或子查询 PRIMARY 主查询,即外层的查询...UNION UNION中的第二个或者后面的查询语句 SUBQUERY 子查询中的第一个 table:输出结果集的表(表别名) type:表示MySQL在表中找到所需行的方式,或者叫访问类型。...4.type=ref,使用非唯一索引或唯一索引的前缀扫描,返回匹配某个单独值的记录行 store_id字段存在普通索引(非唯一索引) EXPLAIN SELECT*FROM customer WHERE...表关联查询时必定会有一张表进行全表扫描,此表一定是几张表中记录行数最少的表,然后再通过非唯一索引寻找其他关联表中的匹配行,以此达到表关联时扫描行数最少。 ?...possible_keys: 表示查询可能使用的索引 key: 实际使用的索引 key_len: 使用索引字段的长度 ref: 使用哪个列或常数与key一起从表中选择行 rows: 扫描行的数量 filtered
,这个标记会使其返回关于在执行计划中每一步的信息,而不是执行它,它会返回一行或多行信息,显示出执行计划中的每一部分和执行的次序,从而可以从分析结果中找到查询语句或是表结构的性能瓶颈。...type: 显示连接类型,显示查询使用了何种类型,按照从最佳到最坏类型排序 1.system:表中仅有一行(=系统表)这是const联结类型的一个特例。...因为只匹配一行数据,所以如果将主键置于where列表中,mysql能将该查询转换为一个常量 3.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。...简单查询不会出现该类型 4.ref:非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,是使用普通索引或者唯一性索引的部分前缀,它返回所有匹配某个单独值的行,可能会找多个符合条件的行,...属于查找和扫描的混合体 5.range:只检索给定范围的行,使用一个索引来选择行。
在查询中,每个表的输出只有一行,若多表关联,则输出多行。别名表单算为一个表,因此如果把表和自己连接,输出中也会有两行。这里的表的定义非常的广:可以是一个子查询,一个 UNION 结果。...如果查询中没有子查询或关联查询,那么只会有唯一的SELECT,每一行的该列中都将显示一个1,否则,内层的SELECT语句一般会顺序编号,对应于其在原始语句中的位置。...其他部分标记如下: SUBQUERY,包含在SELECT子句(不在from子句中)中的子查询的SELECT,结果不依赖于外部查询。 DERIVED,包含在from子句中的子查询中的SELECT。...UNION RESULT,用来从UNION的匿名临时表中检索结果的SELECT。...Using filesort:MySQL会对结果使用一个外部索引排序,而不是按索引次序从表里读取行,即filesort(文件排序)。
下面分别对EXPLAIN命令结果的每一列进行说明: select_type:表示SELECT的类型,常见的取值有: 类型 说明 SIMPLE 简单表,不使用表连接或子查询 PRIMARY...主查询,即外层的查询 UNION UNION中的第二个或者后面的查询语句 SUBQUERY 子查询中的第一个 table:输出结果集的表(表别名) type:表示MySQL在表中找到所需行的方式...表关联查询时必定会有一张表进行全表扫描,此表一定是几张表中记录行数最少的表,然后再通过非唯一索引寻找其他关联表中的匹配行,以此达到表关联时扫描行数最少。...type=const/system,单表中最多有一条匹配行,查询起来非常迅速,所以这个匹配行的其他列的值可以被优化器在当前查询中当作常量来处理 const/system出现在根据主键primary...: 使用索引字段的长度 ref: 使用哪个列或常数与key一起从表中选择行。
领取专属 10元无门槛券
手把手带您无忧上云