查询求解概述读书笔记

查询求解概述读书笔记,第1张

概述1. 访问路径 是指针对某个表的读取方式,最普通的是heap_scan的方式,即表扫描的方式,如果表上有索引,还可以有索引扫描的方式,具体采用哪种方式进行扫描,依赖于选择条件中的主合取体。 选择条件称为合取范式,每个合区条件是一个合取体。 选择中的每个条件是一个合取体,能够和索引匹配的选择条件称为主合取体。 1.1 选择 *** 作 选择 *** 作是反应sql语句中过滤条件的一种 *** 作,对于聚簇索引,使用索引扫描

1. 访问路径

是指针对某个表的读取方式,最普通的是heap_scan的方式,即表扫描的方式,如果表上有索引,还可以有索引扫描的方式,具体采用哪种方式进行扫描,依赖于选择条件中的主合取体。

选择条件称为合取范式,每个合区条件是一个合取体。

选择中的每个条件是一个合取体,能够和索引匹配的选择条件称为主合取体。


1.1 选择 *** 作

选择 *** 作是反应SQL语句中过滤条件的一种 *** 作,对于聚簇索引,使用索引扫描的方式做选择 *** 作通常会比较好,但如果索引是非聚簇的,则元祖可能散布在不同的页面,效率也可能不高。


经验值是选择超过5%的页面,往往通过直接表扫描的方式效率会更好。


1.2 投影 *** 作

如果不去除重复。

选择部分属性作为输出,如果索引能匹配,也可以通过索引查询


1.3 连接 *** 作


2. 查询优化概述


2.1. 流水线 *** 作

某个 *** 作结果不经过物化直接通过管道提供给下一个 *** 作应用,即为流水线 *** 作。


2.2 迭代器接口


open -> getNext ->close

屏蔽了不同的扫描 *** 作的细节(如通过表扫描、索引扫描、排序扫描)。


3. 常用的优化方式


3.1 下推选择

连接 *** 作是比较耗时的 *** 作,通过下推选择 *** 作过滤掉关系中的一些元组,使连接的表的数据量减少。


3.2 使用索引



4. 一个典型的优化器要做什么


4.1 考虑不同的查询计划

考虑将选择和叉积合并到连接中

考虑将选择和投影下推到连接前

重新考虑连接顺序


通常连接采用左深树,优势是能够全流水线作业。


4.2 估算计划的代价


常用的IO代价:读输入表、写中间表、结果排序。


5.数据库三大范式


第一范式 无重复的列 数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。如果实体中的某个属性有多个值时,必须拆分为不同的属性 在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。 第二范式 属性完全依赖于主键 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。 当存在多个主键的时候,才会发生不符合第二范式的情况。比如有两个主键,不能存在这样的属性,它只依赖于其中一个主键,这就是不符合第二范式。 如果存在不符合第二范式的情况,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。 第三范式 属性不能传递依赖于主属性(属性不依赖于其它非主键属性) 第三范式(3NF)是在第二范式(2NF)的基础上建立起来的,即满足第三范式(3NF)必须先满足第二范式(2NF)。 如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。

总结

以上是内存溢出为你收集整理的查询求解概述读书笔记全部内容,希望文章能够帮你解决查询求解概述读书笔记所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1176931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存