逻辑查询优化

为什么80%的码农都做不了架构师?>>>   hot3.png

1、逻辑查询优化

     基于关系代数理论,启发式规则,对查询进行等价重写。

2、查询重写规则

(1)子查询优化


(2)视图重写


(3)等价谓词重写


(4)条件化简


(5)外连接消除


(6)嵌套连接消除


(7)连接消除


(8)语义优化


(9)针对非SPJ的优化


3、查询的基本操作

(1)选择

即限制条件,优化方式是选择操作下推,目的是尽量减少操作前的元组数,使得中间临时关系尽量少,减少IO、CPU的消耗,节约内存空间。

比如a = b, b =1 ,下推到 a=1 and b=1,分别下推到A,B表


(2)投影操作

对应的select目的列对象,优化方式是投影操作下推。

目的是尽量减少连接操作前的列数,使得中间临时关系尽量少,节约内存空间


(3)连接操作

至少两个表存在。

A、多表连接中每个表被连接的顺序决定着效率

比如ABC,ACB,BCA等

B、多表连接中每个表被连接的顺序被用户语义决定

笛卡尔积、内连接、左外连接、右外连接、全外连接


4、查询的类型

(1)针对SPJ的查询优化

基于选择(Select)、投影(Projection)、连接(Join)三种基本组合操作结合的查询所做的优化

选择、投影可以在关系代数规则的指导下进行优化

表连接,需要多表连接的相关算法完成优化。


(2)针对非SPJ的查询优化

在SPJ的基础上存在GROUP BY操作的查询,这是一种较为复杂的查询,对带有GROUP BY、ORDER BY等操作的优化

基于索引及代价估算完成。


5、物理查询优化

代价模型+索引利用+单表扫描算法+两表连接算法+多表连接算法 = 物理查询优化

转载于:https://my.oschina.net/scipio/blog/292767

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

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

相关文章

CentOS 7 Root用户密码重置 2017-04-02

跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 开机的时候按e (如果正在使用,你可以输入reboot,然后赶紧按回车键,也…

Android之解决布局文件图片太大同步放缩后挤掉其它布局的问题

1、问题 局文件图片太大同步放缩后挤掉其它布局的问题 比如有个图片logo1.png,很大,在平板上图片布局写成这样 <ImageViewandroid:src="@drawable/logo1"android:layout_width="wrap_content"android:layout_height="wrap_content"andro…

oracle处理考勤时间,拆分考勤时间段的sql语句

最近一直在用mysql数据库做云项目,有段时间没有接触oracle了,昨天有朋友叫我帮忙用oracle处理一个考勤记录的需求,我在考虑如何尽量精简实现上面花了一些时间。于是把这个实现做个总结。 需求如下: rownum为奇数的为进厂时间&#xff0c;偶数的为离场时间第一个奇数行的时间被第…

c语言程序出现错误,C语言程序错误,不能正常读写文件,求解啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#define LEN sizeof(struct student)#include#include#includestruct student{int num;char name[20];int score[3];int aver;}; void personal_information_input(FILE *fp){struct student *p;int a,i,n;printf("请输入将要…

实现DDD领域驱动设计: Part 2

原文链接: https://dev.to/salah856/implementing-domain-driven-design-part-ii-2i36实现&#xff1a;构建块这是本系列的重要部分。我们将通过示例介绍和解释一些明确的规则。在实现领域驱动设计时&#xff0c;你可以遵循这些规则并应用到你的解决方案中。示例示例将使用GitH…

王彪20162321 2016-2017-2 《程序设计与数据结构》第5周学习总结

王彪 2016-2017-2 《程序设计与数据结构》第5周学习总结 教材学习内容总结 1.关键概念 1.面向对象程序设计的核心是类的定义&#xff0c;它代表了状态和行为的对象。2.变量的作用域依赖于变量声明的位置&#xff0c;作用域决定在哪里可以使用变量。3.对象应该是封装的&#xff…

ubuntukylin14安装ns-allinone-2.35教程(虚拟机ubuntu同理)

准备材料&#xff1a; 1.ubuntukylin14&#xff0c;百度进官网自行下载&#xff1b; 2.ns-allinone-2.35.tar.gz&#xff0c;百度进官网自行下载&#xff1b; 3.虚拟机&#xff1a;vmwareworkstation&#xff08;可选&#xff09;. 4.不推荐windows环境下的cygwinns2&#xff0…

C语言之理解(*(void (*)())0)()和signal函数

1、需要理解的表达式 计算机启动的时候,硬件将要调用首地址为0位置的子例程,表达式如下 (*(void (*)())0)(); 2、解释 我们知道void (*f)() f是指向返回值为void类型的函数 因此,(void (*)())表示指向返回值为void类型的函数的指针的类型强制转换符 我们调用函数指针的时…

c语言指针索引数组,C语言数组指针表示法

指针在处理数组时很有用&#xff0c;我们可以用指针指向已有的数组&#xff0c;也可以从堆上分配内存然后把这块内存当做一个数组使用。数组表示法和指针表示法在某种意义上可以互换。不过&#xff0c;它们并不完全相同&#xff0c;后面的“数组和指针的差别”中会详细说明。单…

关于我自己的三个层次

有时候会意识到自己不够聪明&#xff0c;然后在把自己同那些大家相比时会感到自己的渺小&#xff0c;比如说博弈论专家纳什在20世界50年代就弄清楚的博弈论我现在学起来还是感觉很晦涩难懂&#xff0c;这就是自己的天分确实不是很好的直接证明。 天分好不好不是决定性因素&…

C# 使用AggregateException 信息

为了得到所有失败任务的异常信息&#xff0c;可以将 Task.WhenAll 返回的结果写到一个Task 变量中。这个任务会一直等到所有任务都结束。否则&#xff0c;仍然可能错过抛出的异常。上一小节中&#xff0c;catch 语句只检索到第一个任务的异常。不过&#xff0c;现在可以访问外部…

简单动态规划问题分析

例题&#xff1a; 1022: 菜鸟和大牛&#xff08;csuoj&#xff09; 像这一类问题&#xff0c;首先不管是属于什么类型的&#xff0c;如果是按照题目的思路一步步走下来&#xff0c;然后运行&#xff0c;最后肯定是要超时的&#xff0c;究其原因&#xff0c;它的时间复杂度很不合…

Android之内置和外置sdcard路径显示并且写入数据

1、效果图片 2、部分代码 package com.example.sdcardcheck;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Array; import java.lang.…

数据挖掘——数据仓库

虽然存在数据仓库并不是数据挖掘的先决条件&#xff0c;但实际上&#xff0c;若能访问数据仓库&#xff0c;数据挖掘的任务就会变得容易的多。 数据仓库的主要目标是增加决策过程的“情报”和此过程的相关人员的知识。数据仓库对不同的人来说有不同的意义。 数据仓库是一个集成…

c2000 汇编语言指令,C2000系CMD文件的配置理解

马上注册&#xff0c;结交更多好友&#xff0c;享用更多功能&#xff0c;让你轻松玩转社区。您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册x推荐CMD的专业名称叫链接器配置文件&#xff0c;是存放链接器的配置信息的&#xff0c;我们简称为命令文件&#…

OxyPlot 导出图片及 WPF 元素导出为图片的方法

OxyPlot 导出图片及 WPF 元素导出为图片的方法目录OxyPlot 导出图片及 WPF 元素导出为图片的方法一、OxyPlot 自带导出方法二、导出 WPF 界面元素的方法三、通过附加属性来使用独立观察员 2022 年 2 月 26 日最近有个需求&#xff0c;就是将 OxyPlot 图形导出图片。经过尝试&am…

java实现各种算法

package sortAlgorithm;import java.io.File;import java.io.IOException;import java.sql.Time;import java.util.Random;* author sky* 该类给出各种排序算法public class sort{private static Integer[] elem(int n){int Nn;Random randomnew Random();Integer elem[]new In…

BDB (Berkeley DB)简要数据库(转载)

使用最近DBD。然后搜了下相关资料&#xff0c;首先公布的是一门科学&#xff1a; 转会http://www.javaeye.com/topic/202990 DB综述DB最初开发的目的是以新的HASH訪问算法来取代旧的hsearch函数和大量的dbm实现&#xff08;如AT&T的dbm&#xff0c;Berkeley的ndbm。GNU项目…

C语言之rand()和srand()函数

1、rand()、srand()函数介绍 srand 初始化随机种子,rand 产生随机数 定义函数:int rand(void) 函数功能:产生随机数 函数说明:rand的内部实现是用线性同余法做的,不是真的随机数,因为其周期特别长,一定的范围里可看成是随机的。rand()会返回一随机数值,范围在0至RAND_…

delphi中利用Indy的TIdFtp控件实现FTP协议

2019独角兽企业重金招聘Python工程师标准>>> delphi中利用Indy的TIdFtp控件实现FTP协议版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。现在很多应用都需要上传与下载大型文件&#xff0c;通过HTTP方式上传大文件有一定的局限性。幸好FT…