SQL 处理

查询处理步骤:1.语法分析与翻译 2.优化 3.执行 如图:

用于执行一个查询的原语的操作序列称为查询执行计划(query-excution plan)或查询计算计划(query-evaluation plan)。查询执行计划引擎(query-execution engine)接受一个查询执行计划,。执行该计划并把结果返回给查询。

"sqlprocess"

SQL运算处理的实现方法:

1.选择运算(select operation):

A1(线性搜索) A2(二分搜索) A3(主索引,码属性等值比较)

2.连接运算(join operation):

1.嵌套循环连接 2.块嵌套循环连接(若连接的结果大小几乎与两个关系的笛卡尔积相当) 3.索引嵌套循环连接(若存在索引) 4.归并连接(若关系已排序,则归并连接比较可取) 5.散列连接(把关系划分多个部分,是每个部分都能被内存所容纳。划分过程是通过连接属性的散列函数来进行,这样,相应的划分对可以独立地进行连接)如图:

"hashjoin"

3.去除重复:1.归并排序完,将相邻相同的去除,只保留一个 2.建立内存散列索引,只有不在索引的元组才插入;否则,元组被抛弃。

4.集合运算:(union,intersection,except)

r∪s: 1. 对Hri建立内存散列索引 2.把Hsi中的元组加入散列索引中,条件是该元组不再散列索引中 3.把散列索引中的元组加入结果中

r∩s: 1. 对Hri建立内存散列索引 2.对Hsi的每个元组,检查散列索引,仅当它出现在散列索引中时将元组写到结果中。

r-s: 1. 对Hri建立内存散列索引 2.对Hsi的每个元组,检查散列索引,若它出现在散列索引中则将之从散列索引中删除。 3. 把散列索引中剩余的元组加入结果中

5.聚集运算:(min,max,count,avg,group by) 如去除重复,可以用排序和散列的方法。

Comments