例 3.49 查询每个学生及其选修课程的情况
如果把联结字段名字设置为不同
在这里并没有实际意义,只是想通过这么一个例子证明 连接字段类型必须是可比的,但名字不必相同。
连接操作的执行过程:
<1>嵌套循环法
· 首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。
· 表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。
· 重复上述操作,直到表1中的全部元组都处理完毕
类似于for的嵌套循环
<2> 排序合并法(SORT-MERGE)
· 首先按连接属性对表1和表2排序
· 对表1的第一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续
· 找到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表2中大于表1连接字段值的元组时,对表2的查询不再继续
· 重复上述操作,直到表1或表2中的全部元组都处理完毕为止
<2>比<1>效率更高,因为<1>无论如何都必须将所有可能排查一遍</