关系查询处理和查询优化

简介: 关系查询处理和查询优化

1.关系查询处理


为什么要有查询处理这个步骤?

其目的是把我们的查询语句转化为高效的执行计划。

其有四个阶段:

查询分析:分析语句是否有问题

查询检查:分析语义是否有问题

查询优化:主要有物理优化和代数优化,挺高效率的关键

查询执行:顾名思义

下面介绍一些实现查询操作的算法思想,再着重介绍查询优化,特别是代数优化。


1.1连接操作的实现。


扫描全表法: 逐一检查每个元组是否满是选择条件

索引扫描法: 若选择条件中有索引,先通过索引找到符合条件元组指针,再通过元组指针检索到结果。

一般来说前一种方法大表效率低,后者效率高。


1.2连接操作的实现


以两表为列,可以拓展到多表

嵌套循环法: 对外层循环每一个元组,检查内层循环每一个元组是否符合连接条件

排序—合并法: 对两表连接属性排序和,有点类似于两个链表的连接合并过程进行查找并连接

索引连接法: 对一表连接属性创建索引,对另一表的每个连接属性通过索引查找是否符合连接条件并连接。

Hash Join 方法: 用连接属性做哈希码,用同一个哈希函数散列后连接。


2.查询优化


查询优化分物理优化和代数优化,这里主要介绍代数优化,物理优化不谈。

代数优化是利用关系代数等价变换规则的优化方法,首先得明确自己的优化方向:

一般来说差、并、笛卡尔积、连接是二目运算,比较复杂,投影、选择较简单。所以:

a.选择运算先行,投影先行

b.选择投影串联一般要合并成单个选择或单个投影或一个选择后跟一个投影

明白上面两个大方向后,其实自己要记忆的式子就少了许多,大方向就是转为投影或者转为选择。

由于符号问题转换成中文描述:

转为投影:


投影的串接定理:应用一般,可以自主思考

投影与笛卡尔积的分配率:以A、B分别代表E1,E2的属性列:

投影A,B(E1XE2)=投影A(E1)X投影B(E2)                //**重点**

投影与并的分配率:先并再投=先投再并     //**重点**


转为选择:

选择与笛卡尔积的交换律:若F为E1中的属性,则:
                                   选择F(E1XE2)=选择F(E1)XE2
                                   若F=F1和F2
                                   且F1只属于E1,F2只属于E2,则:
                                   选择F(E1XE2)=选择F1(E1)X选择F2(E2)
                                   若F=F1和F2
                                   且F1只属于E1,F2属于E1、E2,则:
                                   选择F(E1XE2)=选择F2(选择F1(E1)XE2)//重点
选择串接定理:选择F1(选择F2(E))=选择F2(选择F1(E))=选择F1和F2(E)//重点
选择的分配率:先(并、差、连接)再选择=分别选择再(并、差、连接//重点
相关文章
|
存储 SQL 关系型数据库
大数据量下数据库分页查询优化方案汇总
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。
511 2
|
3月前
|
存储 中间件 数据库连接
|
3月前
|
缓存 定位技术 数据库
如何优化大表的查询速度?
如何优化大表的查询速度
28 1
|
6月前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
1028 0
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库—查询:关联查询(一篇教会你在多表关联下查询数据)
MySQL数据库—查询:关联查询(一篇教会你在多表关联下查询数据)
148 0
|
SQL 数据库
基础DQL(数据查询)——多表关系及多表查询概述
我们要想在数据库的层面上体现这种关系,就要建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
113 0
基础DQL(数据查询)——多表关系及多表查询概述
|
存储 SQL 缓存
MySql索引分析及查询优化
MySql索引分析及查询优化
206 0
MySql索引分析及查询优化
|
数据库
数据库多表关联对多对关系
本文章解决数据库设计多表关联配置问题,多对多关系!
134 0
|
SQL 数据库
数据库查询——组合表查询
数据库查询——组合表查询
152 0