数据库语法树优化

news2024/11/14 20:01:13

目录

一、σ、π、⋈

    1.选择σ

    2.投影π

    3.连接⋈

二、 构建语法树

    ① 解读sql语句

    ② 写出关系代数表达式

    ③ 画出语法树

三、优化语法树

四、练习

    语法树优化方法


一、σ、π、⋈

    1.选择σ

       选择就是在关系R中选择满足给定条件的诸元组。

       通过条件Sdept='IS'选择出系别是IS的学生信息。 

    2.投影π

       关系R上的投影是从R中选择出若干属性列组成新的关系。

       选择出Sname、Sdept属性列组成新的关系。

通过两幅图对比可以看出,选择σ是从原表中选择出满足条件的行,投影π是从原表中选择出满足条件的列。

    3.连接⋈

       连接也称为θ连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。

       连接分为非等值连接,等值连接、自然连接。其中我们需要注意的是自然连接,理解自然连接是什么请参考文章:非等值连接、等值连接、自然连接-CSDN博客 

二、 构建语法树

    ① 解读sql语句

       通常考查语法树优化的都是多表查询。
       章节一中说到,投影是从一个关系中选择出若干属性列组成新的关系,select语句部分描述的的是投影π。
       where表示的条件可以分为两部分,一部分是题目真正想查询的结果,另一部分是多表连接的条件,where语句强调的是条件,也就是选择,章节一中说到选择就是在一个关系中选择满足给定条件的诸元组。所以where语句部分描述的是选择σ。
       最后则剩下关系表的连接,表的连接在语法树中笛卡尔积,符号用 x 表示。

    ② 写出关系代数表达式

       以书上如下例子,写出关系代数表达式:


    此题中SC.Cno='2',是题目真正想查询的结果;而Student.Sno=SC.Sno则是两表连接的条件。

    ③ 画出语法树

       有了关系表达式,我们就可以画出语法树,画语法树时有一个技巧:"由外到里,由上到下",由关系表达式最外面的括号开始一层层向里从上到下画出语法树

三、优化语法树

     语法树的优化实际上就是通过条件不断选择出一个更加细化的关系,再与另一个关系笛卡尔积连接,这样可以减少计算量。

    当然书上用的等值连接,在笛卡尔积上加上条件用以选择,表达的意义与等值连接相同,理解即可。如果题目要求用等值连接,或者题目给出的关系代数表达式用的等值连接,那么画图也要用等值连接。

四、练习

    书上例子较为简单,这里用一个稍微复杂一点的例子练习用以加深理解。

    语法树优化也许各有各的方法,我的方法如下:

    语法树优化方法

       第一步:把题目想查询的结果的选择条件移动到对应关系模式前。
       第二步:把表的连接条件拆开,移动到对应关系模式前。
       第三步:在对应关系模式前,添加题目查询所需的列属性和连接条件的投影。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1701876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

某安全厂商外包安服工程师面试

写在前面:本篇帖子出现的厂商and面试问题皆为up实际面试情况,厂商信息不透露,仅供师傅们参考。 背景 某知名安全厂商外包 岗位:安全服务工程师(偏售后) 薪资条件:7~9k(up所在二线…

Nssm打包.netcore控制台程序到Windows服务,实现长Ping服务器

需求:应客户需求,现场服务器和客户端之间网络总是不稳定。导致客户端总是和服务器断开连接。为了监测网络,且为了不容易让用户误操作停止监测,所以采用控制台程序打包成windows服务的方式实现。并且加一个winform程序,…

CLI举例:负载分担场景下的源NAT配置(主备设备共用同一个地址池)

CLI举例:负载分担场景下的源NAT配置(主备设备共用同一个地址池) 组网需求 如图1所示,企业的两台FW的业务接口都工作在三层,上下行分别连接路由器。FW与上下行路由器之间运行OSPF协议。上行接口连接同一个ISP。 现在希…

Ubuntu18 配置FFmpeg开发环境 (Vscode+CMake)

关于Vscode插件安装不再赘述,本文主要讲解如何配置FFmpeg的开发环境以及CMake文件写法,如果不知道该安装什么插件请看本文: Ubuntu配置Vscode 文章目录 1.安装FFmpeg开发包2.配置Vscode项目3.使用C语言验证FFmpeg版本 1.安装FFmpeg开发包 更新…

白银现货价格对这两种形态形成突破 应当予以关注

在白银现货价格分析和交易中,突破这个行为一直是一个重要的、具有可分析性的市场动作。本文要讨论的,是基于价格形态之上的突破行为,下面我们就来看看。 中继形态的突破。白银现货价格波动中有中继形态有反转形态,中继形态的意思是…

经典获奖案例 | 度小满互联网金融开源软件治理解决方案

近日,广东省粤港澳合作促进会金融专业委员会和粤港澳大湾区金融创新研究院在广州联合举办“2024年粤港澳大湾区数智金融峰会暨第二届金融创新优秀应用案例与解决方案技术成果授牌仪式”。《度小满互联网金融开源软件治理解决方案》从数百个申报项目中脱颖而出&#…

字符串函数(2)<C语言>

前言 快一周没更博客了,最近有点忙,今天闲下来了,还是不行,继续干,书接上回继续介绍字符串函数:strncpy()、strncat()、strcmp()、strtok()使用、strstr()使用以及模拟实现、strerror()使用。 strncpy()、s…

几种流行的并行方法了解

几种流行的并行方法: 数据并行(data parallel)模型并行(model parallel) tensor并行pipeline并行sequence并行Zero Redundancy Data Parallelism(ZeRO) Data parallelism (DP) 经典的数据并行…

snmp学习小结

背景 很多厂商网络设备获取网络信息接口不一样,snmp用来统一接口 官网Net-SNMP 模型 每个主机可以安装自己的snmp agent,它可以监控目标机器的网络流量,当外部查询snmp信息时,请求会发到目标机器的snmp agent,由sn…

魅族应用市场驳回 安装包包含32位库,请处理32位库后再重新提交

问题出现 解决方法 打开HBuilerX找到项目的mainfest.json 取消cpu类型中armeabi-v7a的勾选。 armeabi-v7a 第7代及以上的ARM处理器(ARM32位),市面上大多数手机使用此CPU类型。 arm64-v8a 第8代、64位ARM处理器(ARM64位&#x…

Halcon 光度立体 缺陷检测

一、概述 halcon——缺陷检测常用方法总结(光度立体) - 唯有自己强大 - 博客园 (cnblogs.com) 上周去了康耐视的新品发布会,我真的感觉压力山大,因为VM可以实现现在项目中的80% 的功能,感觉自己的不久就要失业了。同时…

Java通过Html(ftl模板)生成PDF实战, 可支持商用

Java通过Html(freemarker模板)生成PDF实战, 可支持商用 技术架构 springboot freemarker [pdfbox] flying-saucer-pdf 生成流程: freemarker: 根据数据填充ftl模板文件,得到包含有效数据的html文件(包含页眉页脚页码的处理&#xff0c…

Delft3D水动力-富营养化模型(水质模型)教程

原文链接:Delft3D水动力-富营养化模型(水质模型)教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247605459&idx5&sn105e94f09f0589172835ce8204519971&chksmfa821d34cdf59422b4f6c39b243373a23836d79841a1fcd19f9…

超越中心化:Web3的去中心化应用探索

随着区块链技术的迅速发展,Web3作为其最前沿的应用之一,正引领着互联网进入了一个新的时代。Web3不仅仅是技术的进步,更是一种全新的思维方式和社会模式,其核心理念是去中心化、自治和透明,这与传统的中心化互联网模式…

关于栈的简单讲解

哈喽,小伙伴们大家好呀,今天给大家带来栈、队列的那些知识点。 栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 总结 一种线性…

springboot+minio 文件上传

前期准备 需要先安装minio文件服务器&#xff0c;请参考我上一篇文章 pom.xml 版本 本次使用的是springboot2.7.16 版本&#xff0c; minio 版本是8.2.2 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare…

1071.字符串的最大公因子

对于字符串s和t&#xff0c;只有在s t t t ... t t&#xff08;t自身连接1次或多次&#xff09;时&#xff0c;我们才认定 “t能除尽s”。 给定两个字符串str1和str2。返回最长字符串x&#xff0c;要求满足x能除尽str1且x能除尽str2 。 示例 1&#xff1a; 输入&#xf…

上位机图像处理和嵌入式模块部署(f103 mcu原理图)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 从linux卡片电脑转到mcu领域,第一个需要适应的估计就是原理图。之前学习linux的时候,我们大概只需要知道一些接口就好了,比如电源键、usb、网口、hdmi口、音频口、tf卡槽等等,整…

使用Java 读取PDF表格数据并保存到TXT或Excel

目录 导入相关Java库 Java读取PDF表格数据并保存到TXT Java读取PDF表格数据并保存到Excel 在日常工作中&#xff0c;我们经常需要处理来自各种来源的数据。其中&#xff0c;PDF 文件是常见的数据来源之一。这类文件通常包含丰富的信息&#xff0c;其中可能包含重要的表格数据…

冯喜运:5.27黄金暴跌大阴后出现“暂定符”今日黄金原油操作策略

【黄金消息面分析】&#xff1a;金价虽然有大阴线暴跌&#xff0c;但依然属于超买后的调整而非熊市&#xff0c;对中长线投资者来说只是市场洗牌。因此&#xff0c;在出现企稳迹象之后&#xff0c;随时关注反弹时机的启动。未来几日&#xff0c;黄金空头可能在进一步发力之前需…