请解释一下。
a)“子查询分解”被用来替换不相关的子查询。相关子查询呢?有没有办法将相关子查询移到“WITH”子句部分?
b) "subquery“"subquery factoring”是否只执行一次?
c)“子查询”vs“子查询分解”,哪一个更好
谢谢。
发布于 2010-06-03 11:55:50
您可以使用子查询分解来替换不相关的子查询。
您到底打算如何对相关子查询执行此操作?
我不明白(b)部分,你能换个说法吗?
猜测一下您的意思: WITH子句中的一个子查询通常在主查询执行之前只执行一次。
对于大型数据集,子查询分解显然更好,因为在大多数情况下,即使不是所有情况下,也只执行子查询一次。对于较小的数据集,创建临时表的开销可能比实际查询花费的时间更长。
除了上面提到的性能问题之外,子查询分解还会产生更干净、更易于维护的代码。
发布于 2010-06-03 13:23:26
术语“子查询分解”是指使用子查询的_re_factoring吗?重构是在不改变其结果的情况下改变例程以提高可维护性和可读性的过程。有时候,人们无法将子查询重构为一个公用表表达式(重构为"WITH“子句)。此外,没有关于总是使用CTE或总是使用子查询(或派生表)的黄金法则。哪种方法执行得最好,这取决于数据和DBMS。
https://stackoverflow.com/questions/2963188
复制相似问题