IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

相应的子查询


IBM大型机论坛 -> DB2
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
lay

新的用户


已加入:2004年2月15日
帖子:8

发布发表:2004年2月20日,星期五,下午12:25
引用回复

你好

任何人都可以给我一个有关子查询和同义查询的清晰概念,并提供适当的示例。
回到顶部
查看用户资料 发送私信
麦克米伦

网站管理员


加入:2003年5月18日
帖子:1204
地点:印度

发布发表:2004年2月20日星期五2:38 pm
引用回复

我希望此信息将指导您:

引用:
定义:相关子查询是指外部查询的至少一列。

包含相关子查询的任何谓词都是阶段2谓词。

示例:在以下查询中,相关名称X说明了子查询对外部查询块的引用。

选择*从DSN8610.EMP X
职位='设计者'
和存在(选择1
FROM DSN8610.PROJ
DEPTNO = X.WORKDEPT
AND MAJPROJ ='MA2100');

DB2做什么:为所引用的外部查询的每个合格行评估一个相关的子查询。在执行示例时,DB2:

1.从表EMP读取一行,其中JOB ='DESIGNER'。

2.在存储在内存中的表中,从该行中搜索WORKDEPT的值。

内存中的表保存子查询的执行。如果子查询已经使用WORKDEPT的值执行,则结果为
子查询在表中,并且DB2不会针对当前行再次执行该子查询。而是,DB2可以跳到步骤5。

3.如果WORKDEPT的值不在内存中,则执行子查询。这需要搜索PROJ表以检查是否有任何
当前的WORKDEPT负责的MAJPROJ项目为MA2100。

4.将WORKDEPT的值和子查询的结果存储在内存中。

5.将EMP当前行的值返回给应用程序。


DB2对EMP表的每个合格行重复此整个过程。

关于内存表的注释:如果包含子查询的谓词的运算符是以下之一,则内存表适用。
以下运算符:

<, <=, >, >=, =, <>, EXISTS, NOT EXISTS

但是,如果满足以下条件,则不使用该表:

子查询中有16个以上相关的列

相关列的长度之和超过256个字节

在外部查询的表的相关列的子集上有一个唯一索引
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> DB2

 


类似主题
话题 论坛 回覆
没有新帖 哪种类型更有效? DB2 2
没有新帖 什么是子查询中的EXIST,ANY,ALL DB2 1
搜索我们的论坛:


回到顶部