文章目录

  • 查询处理步骤
    • 查询操作的常用算法
      • 选择操作的实现算法
      • 连接操作的实现算法
  • 查询优化
    • 查询优化的一个实例
  • 代数优化
    • 画查询树并优化
    • 计算IO读写块数

查询处理步骤

查询处理分为4个阶段:
查询分析
查询检查
查询优化
查询执行

查询操作的常用算法

选择操作的实现算法

选择操作时查询处理中最常用也是最耗时的操作之一。

  1. 索引扫描算法(index scan)
    如果选择条件上有索引(例如B+树索引或hash索引),可以用索引扫描方法。
    算法思想:先通过缩影找到满足条件的元组指针,再通过元组指针在基本表中找到元组。

例子:
选择条件Sdept = ‘cs’ AND Sage > 20,如果Sdept和Sage上都有索引。
则有两种算法可选:
一种是通过索引分别找到两个条件的元组指针集合,再求两个集合的交集,再到基本表中去检索。
另一中算法是通过Sdept = 'cs’找到一个元组指针集合,然后遍历这个指针集合,到基本表中将满足另一条件(Sage > 20)的元组选择输出。

  1. 简单的全表扫描算法
    算法思想:按照物理次序读表的M块到内存,检查内存中的每一个元组t。如果t满足选择条件,则输出t。如果表中还有未处理的块,重复前两步。

二者的比较:
一般情况下,当选择率较低时,基于索引的选择算法要优于全表扫描算法。
但再某些情况,例如选择率较高,或者要查找的元组均匀分布再查找的表中,这时基于索引的选择算法性能不如全表扫描算法。

连接操作的实现算法

  1. 嵌套循环算法(nested loop join)
    这是最简单可行的算法,可以处理包括非等值连接在内的各种连接操作。
    算法思想:(连接条件:left.x = right.x)就是两个for循环,不断在比较,时间复杂度O(N*M)。
    注意:现实中,数据存取时按数据块读入内存中,而不是按照元组进行I/O。

  2. 排序-合并算法(sort-merge join 或者 merge join)
    这是等值连接常用的算法,尤其适合参与连接的诸表已经排好序的情况。
    算法思想:(连接条件:left.x = right.x)先将两个表按连接属性排序,然后两个for循环,根据连接条件把它们连接起来。(有下标、有break)排序时间复杂度O(N*log(N)),循环时间复杂度O(N+M)。
    优点:虽然时间主要花在排序上,但是相比嵌套循环算法,在表规模较大时,还是能减少很多时间。

  3. 索引连接算法(index join)
    算法思想:(连接条件:left.x = right.x)
    要求在right表上已经建立了属性x的索引。通过left表中的x值,通过left上的索引找到相应的right表元组,将左右表的元组连接起来。

  4. hash join算法
    处理等值连接的算法。
    算法思想:
    第一步,划分阶段/创建阶段。创建 hash 表。对包含较少元组的表,进行一遍处理,把它的元组通过连接属性按 hash 函数,分散到 hash 表的桶中。
    第二步,试探阶段/连接阶段。对另一个表,同样进行一遍散列处理,找到合适的 hash 桶,将两个的匹配的元组连接起来。
    (当发现 hash 表中已有key值时,将两个value对应的元组连接。)
    算法时间复杂度O(N+M)。
    缺点:需要一个前提条件,数据量较小的表,在第一阶段后,能完全放入内存中的 hash 桶中。


以下的是有关题目的
需要会做题


查询优化

关系查询优化是影响关系数据库管理系统性能的关键因素。
分为:代数优化(逻辑优化)、物理优化(非代数优化)

查询优化的一个实例

select Student.Sname from Student,SC where Student.Sno = SC.Sno and SC.Cno = ‘2’

  1. 计算两个表的广义笛卡儿积
    这一步产生的结果集太大,需要写入中间文件,写入块数大
    从广义笛卡儿积中根据两个选择条件做选择操作
    读取上一步中间文件,读取块数大
    作投影操作,选出需要的列

  2. 根据Student.Sno = SC.Sno计算两个表的自然连接
    由于已经用条件筛选了,中间文件减小很多,写入块数较小
    从自然连接结果集中,根据SC.Sno = '2’做选择操作
    同样读取中间文件,读取块数较小
    投影输出

  3. 根据SC.Sno == '2’对SC表做选择操作
    对单个表用等值条件筛选了,一般来讲,结果集较小,不需要中间文件,直接存在内存中
    将第一步的结果集,与Student表根据Student.Sno = SC.Sno做自然连接
    不需要读中间文件
    投影输出

代数优化

代数优化策略是通过关系代数表达式的等价变换来提高查询效率的。

画查询树并优化

计算IO读写块数

SDUT 数据库系统概论 关系查询处理和查询优化相关推荐

  1. 第九章——关系查询处理和查询优化

    本章介绍关系数据库的查询处理(query processing)和查询优化(query optimization)技术 查询优化一般可分为代数优化(也称为逻辑优化)和物理优化(也称为非代数优化). 代 ...

  2. 数据库系统概论----关系运算之除运算

    这一周都在复习<数据库系统概论>这门课,看到关系运算的这一节时,对于除运算不是很理解. 通过百度,我觉得也没有得到比较容易理解的讲解. 这里呢,我就分享一下我的理解吧,如有差错的地方,还希 ...

  3. 数据库系统理论 -- 关系查询处理和查询优化

    本篇文章会先介绍数据库的查询处理,然后介绍数据库的查询优化.其中查询优化分为代数优化和物理优化.代数优化是指关系表达式的优化,物理优化是指通过存取路径和底层操作算法的选择进行优化. 查询处理 查询分析 ...

  4. 王珊数据库系统概论第5版视频教材

    目录 隐藏 说明:本课程共包括1种电子书.84个高清视频(共68课时).1种纸质书(赠品). 网授课程 王珊<数据库系统概论>(第5版)网授精讲班[共68课时] 序号 名称 课时 1 第1 ...

  5. 《数据库系统概论》第四版课后习题答案

    第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答: ( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像.声音.正文等.数据与其 ...

  6. 数据库系统概论(第四版)习题解答

    数据库系统概论(第四版) 第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答:( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像 ...

  7. 数据库系统概论王珊第四版 答案

    第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答: ( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像.声音.正文等.数据与其 ...

  8. 《数据库系统概论》课程指南

    <数据库系统概论>课程指南 课程目标 知识:掌握数据库系统的组成.关系数据库理论.数据库设计以及数据库编程.查询优化等方面的知识 能力: 具备分析问题并能进行数据库设计的能力 熟练掌握SQ ...

  9. 《数据库系统概论》学习笔记

    第0章 脚手架 0.1 写在前面 本学习笔记的主要用途,是来回顾数据库的一些基本理论知识和SQL语句. 学习笔记的主要参考文献,为王珊著的<数据库系统概论>(第5版,2014)和教育部考试 ...

  10. 数据库系统概论(第五版 王珊 萨师煊 编著)

    数据库系统概论知识点总结 学习目录 基础篇 第一章 绪论 1.1 数据库系统概述 1.2 数据模型 1.3 数据库系统的结构 1.4 数据库系统的组成 1.5 小结 第二章 关系数据库 第三章 关系数 ...

最新文章

  1. dotnet new 命令使用模板生成Angular应用
  2. JSON.parse()出错解决
  3. 页面调度框架 justep.Shell
  4. c# pictureBox1.Image的获得图片路径的三种方法 winform
  5. java 本年第一天_JAVA获取本周 本月 本年 第一天和最后一天
  6. 3 年后端、4 年前端,聊聊用户认证鉴权
  7. 验证码绕过(对验证码绕过的理解-----burpsuite)
  8. Android开源项目推荐之「图片加载到底哪家强」
  9. 教你如何恢复U盘里的中毒文件
  10. 蓝宝书优缺点之GRE词汇盘点
  11. python的十句名言_洗脑最厉害的10句名言名句
  12. C语言常见字符串函数、字符分类函数与内存函数的使用
  13. H Hash Function
  14. 计算机应用的知识能力和素质,信息素质与计算机应用能力
  15. E. Permutation Game
  16. 李炎恢bootstrap做轮播器的方法与思路
  17. 计算机科学引论英文精编pdf,计算机科学引论英文版.pdf
  18. go-zero创建报required as: github.com/tal-tech/go-zero
  19. 魔兽地图编辑器插件YDWE的使用与基本设置6 输入管理器
  20. Vista优化大师3.31正式版下载,磁盘整理升级到1.1

热门文章

  1. Chartboost大中华区开发者关系经理刘欣允:如何设计,以增加游戏内收入
  2. 图片大小怎么调整?图片怎么改尺寸?
  3. c语言自动画波形程序,【小程序】C语言实现简易钢琴-利用sin函数构造不同频率波形模拟各琴键发音...
  4. Python基础教学3:变量名和赋值
  5. 2022年面试,整理全网初、中、高级常见 Java 面试题
  6. C语言的getc()和putc()函数
  7. 无损检测行业市场发展机遇分析及市场规模竞争战略可行性研究预测
  8. 寒假每日一题——贝茜放慢脚步
  9. 计算机教师的幸福,有关信息技术教师教育感言
  10. 2021.4.17日简报:五子登科、BMEX、优选家、加电、链淘等项目