数据库系统概论第五版_第九章:关系查询处理和查询优化
目录
- 关系查询处理和查询优化
- 查询处理
- 基本步骤(概念题)
- 查询操作的示例
- 查询优化(计算I/O次数题)
- 代数优化(基于语法树的优化题)
- 物理优化
关系查询处理和查询优化
本章主要涉及数据库的查询处理步骤和查询优化技术。查询优化可分为代数优化和物理优化。代数优化是对关系代数表达式的优化,物理优化是对存取路今后和底层算法的选择的优化。
查询处理
基本步骤(概念题)
关系数据库的查询处理分为查询分析、查询检查、查询优化、查询执行四个步骤。
- 查询分析:对语句进行扫描、词法分析,识别出关键字等,然后进行语法分析,检查其是否符合SQL语法规则。
- 查询检查:对查询语句进行语义检查,检查数据库、关系名、属性名等是否存在且有效;与此同时,进行视图消解,转化为对基本表的操作;根据用户权限和完整性约束对查询进行检查。检查通过后,将SQL转化为等价的关系代数表达式。
- 查询优化:代数优化和物理优化。通过对关系代数的等价变换使查询变得高效,根据基于规则的、基于代价的、基于语义的方法进行存取路径和底层操作的算法的选择。
- 查询执行
查询操作的示例
选择操作:SELECT … FROM … WHERE <条件表达式>
—>全表扫描、索引扫描
连接操作:SELECT … FROM A, B WHERE …
—>嵌套循环、排序-合并算法、索引连接、hash join算法(概念题)
查询优化(计算I/O次数题)
在使用SQL的时候,用户不必考虑如何最好的表达查询以获得较高的效率,系统可以比用户手动的优化做的更好。原因是:
- 优化器可以从数据字典中获得很多统计信息,做出正确的估算。
- 当物理数据改变时,系统可以自动的对查询进行重新优化。
- 优化器可以考虑上百种优化方法。
- 优化器中采用了很多复杂的技术。
查询的总代价 = I/O代价 + CPU代价 + 内存代价 + 通信代价
有选择和连接操作的时候,应该先做选择操作(索引或全表扫描)。
代数优化(基于语法树的优化题)
对关系代数进行等价变换,提高查询效率。
等价变换规则:
连接运算、笛卡尔积运算的交换率(因为关系属性列的无序的!)
连接、笛卡尔积的结合律(注意!!关系的前后顺序不能改变!!)
结合的先后不同,其代价也是不同的。
投影的串接定律
选择的串接定律
选择与投影的交换律
选择与笛卡尔积的交换律
选择与并的分配律,选择与差的分配律,选择对自然连接的分配律:我们要努力先进行选择操作再进行其他运算!!!
投影与笛卡尔积的分配律
投影与并的分配律
查询树的启发式优化:减少中间关系的元组数,元组大小
- 选择运算尽可能先做
- 投影和选择同时进行(及在一次扫描的过程中同时完成这两种操作)
- 把投影前后的双目运算结合起来,避免重复扫描
- 把先笛卡尔积在进行选择的命令合起来成为连接运算,避免重复扫描或减小中间结果集的规模
- 找出公共子表达式,避免重复计算(例:用户频繁进行基于视图查询操作,而计算视图所需的时间远比从中间文件中取出视图所需是时间长,所以我们先将视图计算出存储在中间文件,用户对视图进行查询时我们直接从中间文件中取出视图)
简化的具体做法:利用上述的规则,尽可能的把选择操作移到树的叶端(向下移动)
物理优化
代数优化不涉及底层的存取路径。物理优化是要选择高效的操作算法与存取路径。
- 基于规则的启发式优化:启发式规则是一种经验,在大多数情况下都适用,但也存在不适用的情况。
- 基于代价估算的优化:优化器估算不同实行策略的代价并选出具有最小代价的
- 两者结合的优化:先根据启发式规则选择较优的候选方案,减少代价估算的工作量,然后再根据代价估算优化方法较快的选择最优的方案。
选择操作的启发式规则:
- 小关系:全表扫描(不管有没有索引)
- 大关系:
- 选择条件是主码=值:使用主码检索(因为查询结果最多只会有一个元组,且DBMS一般都会自动建立主码索引)
- 非主属性=值且选择列上有索引:若估算的元组数占比较小可使用索引扫描,否则还是全表扫描。
- 非等值查询或范围查询且选择列上有索引:若估算的元组数占比较小可使用索引扫描,否则还是全表扫描。
- AND连接的合取选择:优先使用组合索引(如果有的话);在某些条件上有索引,先进行索引扫描找到满足部分条件的元组,然后在这个基础上扫描满足剩下的条件的元组;其他情况:全表扫描
- OR连接的析取选择条件:一般全表扫描
连接操作的启发式规则:
- 两个表都按照连接属性排序:排序-合并算法
- 在连接属性上有索引:索引连接算法
- 其他情况:若一个表较小:hash join 算法
- 嵌套循环算法,较小的表作为外循环的表
基于代价的优化中,优化器要统计很多的信息:
数据库系统概论第五版_第九章:关系查询处理和查询优化相关推荐
- java程序设计基础_陈国君版第五版_第九章例题
java程序设计基础_陈国君版第五版_第九章例题 /*** 本测例会产生一个数组越界异常* @author Richard**/ public class Main9_1 {public static ...
- 第九章——关系查询处理和查询优化
本章介绍关系数据库的查询处理(query processing)和查询优化(query optimization)技术 查询优化一般可分为代数优化(也称为逻辑优化)和物理优化(也称为非代数优化). 代 ...
- 数据库系统概论第五版_第四章:数据库安全性
目录 数据库安全 概述 不安全因素 安全标准简介 安全性控制 用户身份认证方法 访问控制(重点) 视图机制 审计Audit 数据加密 数据库安全 数据库往往有非常多的用户进行访问,其数据需要被共享,但 ...
- 数据库系统概论(第五版) 王珊 第二章课后习题答案
1 .试述关系模型的三个组成部分. 答:关系模型由关系数据结构.关系操作集合和关系完整性约束三部分组成. 2 .试述关系数据语言的特点和分类. 答:关系数据语言可以分为三类: 关系代数语言. 关系演算 ...
- 数据库系统概论(第五版 王珊 萨师煊 编著)
数据库系统概论知识点总结 学习目录 基础篇 第一章 绪论 1.1 数据库系统概述 1.2 数据模型 1.3 数据库系统的结构 1.4 数据库系统的组成 1.5 小结 第二章 关系数据库 第三章 关系数 ...
- 数据库系统概论第五版第二章习题6
(SPJ数据库查询操作) 数据库系统概论第五版第二章习题6(SPJ数据库查询操作)_FunPony的博客-CSDN博客
- 《数据库系统概论(第五版)》学习资料
<数据库系统概论(第五版)>学习资料 一.第一章 1.数据:描述事物的符号记录 2.数据库:长期储存在计算机内.有组织.可共享的大量数据集合. (数据库中的数据按一定的数据模型组织.描述和 ...
- 数据库系统概论第五版知识大纲
数据库系统概论第五版知识大纲 第1章 绪论 1.1 数据库系统概述 基本概念 数据:描述事物的符号记录 数据库:数据库是长期储存在计算机内.有组织的.可共享的大量数据的集合 数据库系统:数据库系统是由 ...
- (数据库系统概论|王珊)第九章关系查询处理和关系优化-第三节:查询优化之代数优化
注意: 关系代数有关符号,大家可能又不熟悉了,点击跳转:(数据库系统概论|王珊)第二章关系数据库-第四节:关系代数 文章目录 一:关系代数表达式等价变换规则 (1)连接.笛卡尔积.并.交的交换律 (2 ...
- 数据库系统概论第五版课后习题
数据库系统概论第五版课后习题
最新文章
- 2 用python进行OpenCV实战之图像基本知识
- 锁死AI基础研究的两个「智子」是什么?
- oracle11管理员连接数据库,1.运行 cmd.exe;2.输入 sqlplus / as sysdba,以系统管理员(sysdba)身份连接数据库,进行数据库管理操作。3.连接成功后执...
- Sun公司发布最新版本的JDK 6 update 11
- Java 数组中new Object[5]语句是否创建了5个对象?
- React 入门与实战-课时7 虚拟DOM的本质和目的
- opj1837 Balance(dp)
- AC日记——阶乘之和 洛谷 P1009(高精度)
- mysql xtrabackup-v2_MySQL物理备份基础知识(基于xtrabackup2.4版本)
- 数据分析实战—Video Game Sales电子游戏销售分析
- ARP网关欺骗程序的实现(vs2008 winpacp)
- 火焰检测方法和数据集记录
- 计算机专业本科一批,本科一批招生计划
- 牛腩--SQLHelper
- python输入年份判断生肖_python根据出生年份简单计算生肖的方法
- Python爬虫爬取中国大学慕课MOOC课程的课程评价信息(讨论信息),采用selenium动态爬取方法
- 如何设置用计算机程序打开方式,WPS安装后怎么设置为文档的默认打开方式的方法...
- DWI_preprocessing DTI_reduce commands
- 计算机一级设置项目符号,重推计算机等级考试题库:一级MS Office第三章“项目符号和段落编号”...
- No command 'setenv' found