返回顶部
首页 > 资讯 > 数据库 >PostgreSQL在执行逻辑优化中相关的数据结构有哪些
  • 340
分享到

PostgreSQL在执行逻辑优化中相关的数据结构有哪些

2024-04-02 19:04:59 340人浏览 独家记忆
摘要

这篇文章主要介绍“postgresql在执行逻辑优化中相关的数据结构有哪些”,在日常操作中,相信很多人在Postgresql在执行逻辑优化中相关的数据结构有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单

这篇文章主要介绍“postgresql在执行逻辑优化中相关的数据结构有哪些”,在日常操作中,相信很多人在Postgresql在执行逻辑优化中相关的数据结构有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PostgreSQL在执行逻辑优化中相关的数据结构有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

PostgreSQL在执行逻辑优化中相关的数据结构包括RangeSubselect/Alias/RangeVar/ResTarget/ColumnRef.

一、数据结构

RangeSubselect
出现在FROM语句中的子查询


typedef struct RangeSubselect
{
  nodeTag   type;
  //是否有LATERAL?
  bool    lateral;    
  //未转换的子查询语句
  Node     *subquery;   
  //表别名和可选的列别名
  Alias    *alias;      
} RangeSubselect;

Alias
为RangeVar指定别名.别名可能同时重命名了表列.


typedef struct Alias
{
  NodeTag   type;
  //别名
  char     *aliasname;    
  //列别名链表
  List     *colnames;   
} Alias;

RangeVar
range variable,用于FROM语句中.


typedef struct RangeVar
{
  NodeTag   type;
  char     *catalogname;  
  char     *schemaname;   
  char     *relname;    
  bool    inh;      
  char    relpersistence; 
  Alias    *alias;      
  int     location;   
} RangeVar;

ResTarget
结果目标列(用于先前已转换的解析树的目标链表中)


typedef struct ResTarget
{
  NodeTag   type;
  //列名或NULL
  char     *name;     
  //子脚本,字段名称,'*'或NIL
  List     *indirection;  
  //需要计算或赋值的值表达式
  Node     *val;      
  //token的位置,-1表示未知
  int     location;   
} ResTarget;

ColumnRef
指定对列或整个元组的引用


typedef struct ColumnRef
{
  NodeTag   type;
  //字段名称(字符串值)链表或A_Star
  List     *fields;     
  //token位置
  int     location;   
} ColumnRef;

二、源码解读

N/A

三、跟踪分析

RangeSubselect/Alias

(gdb) p *(Node *)($stmt->fromClause->head.data->ptr_value)
$15 = {type = T_RangeSubselect} #实际类型是范围子查询RangeSubselect
(gdb) set $fromclause=(RangeSubselect *)($stmt->fromClause->head.data->ptr_value)
(gdb) p *$fromclause
$16 = {type = T_RangeSubselect, lateral = false, subquery = 0x1666c18, alias = 0x1666d40}
(gdb) p *($fromclause->subquery) #subquery,子查询是SelectStmt类型的节点
$17 = {type = T_SelectStmt}
(gdb) p *($fromclause->alias) #alias,别名,实际值是字符串ret
$18 = {type = T_Alias, aliasname = 0x1666d28 "ret", colnames = 0x0}

RangeVar

...
$43 = {type = T_RangeVar}
(gdb) p *(RangeVar *)((JoinExpr *)($joinexpr->larg))->larg
$44 = {type = T_RangeVar, catalogname = 0x0, schemaname = 0x0, relname = 0x1643380 "t_dwxx", inh = true, 
  relpersistence = 112 'p', alias = 0x0, location = 82}
...

ResTarget

...
(gdb) p *(Node *)($subquerylarg->targetList->head.data->ptr_value)
$26 = {type = T_ResTarget}
(gdb) set $subvar=(ResTarget *)($subquerylarg->targetList->head.data->ptr_value)
(gdb) p *$subvar 
{type = T_ResTarget, name = 0x0, indirection = 0x0, val = 0x1642c70, location = 23}
...

ColumnRef

...
(gdb) p *$restarget->val
$25 = {type = T_ColumnRef}
(gdb) p *(ColumnRef *)$restarget->val
$26 = {type = T_ColumnRef, fields = 0x1a47a08, location = 7}
(gdb) p *((ColumnRef *)$restarget->val)->fields
$27 = {type = T_List, length = 2, head = 0x1a47a88, tail = 0x1a479e8}
(gdb) p *(Node *)(((ColumnRef *)$restarget->val)->fields)->head.data->ptr_value
$32 = {type = T_String}
#fields链表的第1个元素是数据表,第2个元素是数据列
(gdb) p *(Value *)(((ColumnRef *)$restarget->val)->fields)->head.data->ptr_value
$37 = {type = T_String, val = {ival = 27556248, str = 0x1a47998 "t_dwxx"}}
(gdb) p *(Value *)(((ColumnRef *)$restarget->val)->fields)->tail.data->ptr_value
$38 = {type = T_String, val = {ival = 27556272, str = 0x1a479b0 "dwmc"}}
...

到此,关于“PostgreSQL在执行逻辑优化中相关的数据结构有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL在执行逻辑优化中相关的数据结构有哪些

本文链接: https://lsjlt.com/news/63864.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PostgreSQL在执行逻辑优化中相关的数据结构有哪些
    这篇文章主要介绍“PostgreSQL在执行逻辑优化中相关的数据结构有哪些”,在日常操作中,相信很多人在PostgreSQL在执行逻辑优化中相关的数据结构有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • PostgreSQL在执行逻辑优化中相关的数据结构是什么
    这篇文章主要介绍“PostgreSQL在执行逻辑优化中相关的数据结构是什么”,在日常操作中,相信很多人在PostgreSQL在执行逻辑优化中相关的数据结构是什么问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • PostgreSQL中分区表查询相关的重要数据结构有哪些
    本篇内容介绍了“PostgreSQL中分区表查询相关的重要数据结构有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • PostgreSQL执行聚合函数所使用的数据结构有哪些
    这篇文章主要讲解了“PostgreSQL执行聚合函数所使用的数据结构有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL执行聚合函数所使...
    99+
    2024-04-02
  • 关系数据库中数据逻辑结构指的是什么
    这篇文章主要介绍了关系数据库中数据逻辑结构指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。关系数据库中的数据逻辑结构是二维表格。关系...
    99+
    2024-04-02
  • Mysql 5.7中Gtid相关内部数据结构有哪些
    本篇内容介绍了“Mysql 5.7中Gtid相关内部数据结构有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • PostgreSQL中插入数据时与WAL相关的处理逻辑是什么
    本篇内容主要讲解“PostgreSQL中插入数据时与WAL相关的处理逻辑是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中插入数据时与W...
    99+
    2024-04-02
  • PostgreSQL中结合实际的内存数据介绍相关数据结构
    小编给大家分享一下PostgreSQL中结合实际的内存数据介绍相关数据结构,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、数据结构   typedef st...
    99+
    2024-04-02
  • PostgreSQL与其他关系数据库相比有哪些优势
    开源性:PostgreSQL是一个开源的关系数据库管理系统,可以免费使用并进行定制开发,相比商业数据库系统具有成本优势。 支...
    99+
    2024-04-09
    PostgreSQL
  • PostgreSQL统计信息中相关的数据字典表有哪些
    本篇内容介绍了“PostgreSQL统计信息中相关的数据字典表有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2024-04-02
  • java中的数据结构有哪些
    java中的数据结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只...
    99+
    2023-06-14
  • 数据库表中关系模型结构有哪些
    这篇文章主要介绍了数据库表中关系模型结构有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一个关系数据库表中的各条记录前后顺序可以任意颠倒...
    99+
    2024-04-02
  • HTML5中SVG的文档结构及相关元素有哪些
    HTML5中SVG的文档结构及相关元素有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。结构相关的组合和重用元素,这里先对SVG的文档结...
    99+
    2024-04-02
  • Javascript中有哪些常见的数据结构
    本篇文章为大家展示了Javascript中有哪些常见的数据结构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.Stack(栈)堆栈遵循LIFO(后进先出)的原则。...
    99+
    2024-04-02
  • Python中的常用数据结构有哪些?
    Python是一种高级编程语言,广泛应用于数据分析、机器学习、Web开发等领域。在Python中,有许多常用的数据结构,用于存储和处理数据。本文将介绍几种常见的数据结构,并提供相应的代码示例。列表(List):列表是Python中最常用的数...
    99+
    2023-10-22
    列表(list) 元组(tuple) 字典(Dict)
  • Redis数据结构中的String类型有哪些
    这篇文章主要介绍“Redis数据结构中的String类型有哪些”,在日常操作中,相信很多人在Redis数据结构中的String类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • Java中的数据结构与算法有哪些
    这篇文章给大家介绍Java中的数据结构与算法有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一部分:Java数据结构要理解Java数据结构,必须能清楚何为数据结构?数据结构:Data_Structure,它是储存...
    99+
    2023-06-08
  • 在实际工作中,Javascript有哪些常用的数据结构
    在实际工作中,JavaScript常用的数据结构主要包括以下几点:1、数组(Array):用于存储有序的元素集合;2、对象(Object):用于存储键值对;3、集合(Set):用于存储唯一的元素;4、映射(Map):存储键值对,但键可以是任...
    99+
    2023-10-29
    数据结构 常用 有哪些
  • C++ 函数库中有哪些常见的数据结构?
    c++++ 标准函数库提供了以下常用数据结构:数组:连续内存块,通过索引访问元素。向量:动态大小的数组,可自动增长/缩小,提供高效插入/删除/随机访问。链表:线性数据结构,元素存储在动态...
    99+
    2024-04-18
    c++ 数据结构
  • golang项目中有哪些常见的数据结构
    本篇文章为大家展示了golang项目中有哪些常见的数据结构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是golanggolang 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作