相关子查询与不相关子查询有什么区别?举例说明
相关子查询与不相关子查询区别为:处理次数不同、依赖不同、效率不同。
一、处理次数不同
1、相关子查询:相关子查询被多次处理,需要重复求值以供外部查询使用。
2、不相关子查询:不相关子查询的处理一次完成,执行后传递给外部查询。
二、依赖不同
1、相关子查询:相关子查询中的查询条件取决于外部查询中的值。
2、不相关子查询:无关子查询是独立于外部查询的子查询,不依赖于外部查询中的值。
三、效率不同
1、相关子查询:相关子查询可以嵌套在多个层中,但嵌套层越多,效率越低。
2、不相关子查询:不相关子查询不能嵌套,效率高于相关子查询。
扩展资料:
非相关子查询的执行不依赖与外部的查询。
执行过程:
1、执行子查询,其结果不被显示,而是传递给外部查询,作为外部查询的条件使用。
2、执行外部查询,并显示整个结果。
通常,非相关子查询可以分为两种类型:返回单个值的子查询和返回列表的子查询。
内部查询是指外部查询的表->子查询的执行次数取决于外部查询。每行外部查询执行一次子查询。
交叉表查询中允许某些子查询,特别是谓词(where子句中的谓词)。在交叉表查询中不允许使用子查询作为输出(select中列出的那些)。
使用all谓词只检索主查询中的这些记录,这些记录满足子查询中检索的所有记录的比较条件。如果将前面示例中的任何更改为“全部”,则查询将只返回单价高于以25%或更高折扣销售的所有产品的单价的产品。这更多的是一种限制。
参考资料来源: