组中的标量子查询是一种不良做法吗?

卢多维克·奥贝尔

我有这个查询。应该避免嵌套选择吗?有没有更好的办法 ?

WITH cte(oi, oIdOf) AS (
    SELECT ROW_NUMBER() OVER (ORDER BY resIdOf), resIdOf
    FROM @res
    WHERE resIdOf<>0
    GROUP BY resIdOf    
)
INSERT INTO @fop
SELECT x.xIdOf
        ,x.xIdBe
        ,x.xLgnBe
        ,(SELECT e.BE_Commercial FROM BE_ENLEVEMENT AS e WHERE e.BE_Numero_BE=x.xIdBe)
        ,SUM(x.xCoeff)
FROM cte AS o
CROSS APPLY dbo.ft_grapheOfOrigine(o.oIdOf) AS x
GROUP BY x.xIdOf,x.xIdBe,x.xLgnBe;
戈登·利诺夫

我不喜欢聚合相关的子查询。聚合条件可能很难正确,因为相关条件需要引用聚合

事实上,相关子查询可能非常有用,但逻辑​​通常是使用LEFT JOIN任何方式实现的。

更重要的是,重写它们真的很简单。所以:

SELECT x.xIdOf, x.xIdBe, x.xLgnBe,
       e.BE_Commercial,
       SUM(x.xCoeff)
FROM cte o CROSS APPLY 
     dbo.ft_grapheOfOrigine(o.oIdOf) AS x LEFT JOIN
     BE_ENLEVEMENT e
     ON e.BE_Numero_BE = x.xIdBe
GROUP BY x.xIdOf, x.xIdBe, x.xLgnBe, e.BE_Commercial;

从性能的角度来看,这与您的查询并不完全相同,因为它JOIN发生聚合之前,并且有一个额外的聚合键。但是,我认为这对性能的影响非常小,因为它已经在进行聚合。

如果这是一个问题,您可以使用子查询来获得基本相同的执行计划。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

这在 PHP 中是一种不好的做法吗?

来自分类Dev

混用概念是一种改进还是不良做法?

来自分类Dev

将输入类型用于 graphql 查询是一种不好的做法吗?

来自分类Dev

在Ninject中创建多个内核实例是一种不好的做法吗?

来自分类Dev

在析构函数中调用观察者是一种不好的做法吗?

来自分类Dev

在Joomla文章中包含javascript文件是一种不好的做法吗?

来自分类Dev

在GeoDataFrame中包含多个几何列是一种不好的做法吗?

来自分类Dev

在C ++中,将参数包用作初始化列表是一种不好的做法吗?

来自分类Dev

在/ home中创建非用户目录是一种不好的做法吗?

来自分类Dev

在SQLalchemy中混合使用ORM和显式SQL是一种不好的做法吗?

来自分类Dev

将线程局部值保存在静态final字段中是一种不好的做法吗?

来自分类Dev

在标量子查询中创建别名-SQLServer

来自分类Dev

使用通用的FindViewById是一种不好的做法吗?

来自分类Dev

这样使用if / else if / else是一种好的做法吗?

来自分类Dev

使用通用的FindViewById是一种不好的做法吗?

来自分类Dev

开关盒不间断是一种不好的做法吗?

来自分类Dev

在视图中读取文件是一种不好的做法吗?

来自分类Dev

C# 属性,这是一种不好的做法吗?

来自分类Dev

Firebase中的静态数据是一种不好的做法?

来自分类Dev

将事件的逻辑以一种单独的方法添加到触发该事件的方法中,这是一种很好的做法吗?

来自分类Dev

PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

来自分类Dev

让一个用户拥有共享中的每个文件/目录是一种不好的做法吗?

来自分类Dev

PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

来自分类Dev

使用Java中的getter方法将元素添加到List是一种不好的做法吗?

来自分类Dev

在Java中,使用nextLine()重新分配给相同的字符串变量是一种不好的做法吗?

来自分类Dev

将静态属性包含在存储库中可以吗,或者这是一种不好的做法?

来自分类Dev

当我需要“刷新”或“更新”视图时,为ViewModel中的每个属性调用RaisePropertyChanged()是一种不好的做法吗?

来自分类Dev

将函数名称存储在变量中并使用变量调用函数是一种不好的做法吗?

来自分类Dev

一个活动具有多个xml是一种不好的做法吗?

Related 相关文章

  1. 1

    这在 PHP 中是一种不好的做法吗?

  2. 2

    混用概念是一种改进还是不良做法?

  3. 3

    将输入类型用于 graphql 查询是一种不好的做法吗?

  4. 4

    在Ninject中创建多个内核实例是一种不好的做法吗?

  5. 5

    在析构函数中调用观察者是一种不好的做法吗?

  6. 6

    在Joomla文章中包含javascript文件是一种不好的做法吗?

  7. 7

    在GeoDataFrame中包含多个几何列是一种不好的做法吗?

  8. 8

    在C ++中,将参数包用作初始化列表是一种不好的做法吗?

  9. 9

    在/ home中创建非用户目录是一种不好的做法吗?

  10. 10

    在SQLalchemy中混合使用ORM和显式SQL是一种不好的做法吗?

  11. 11

    将线程局部值保存在静态final字段中是一种不好的做法吗?

  12. 12

    在标量子查询中创建别名-SQLServer

  13. 13

    使用通用的FindViewById是一种不好的做法吗?

  14. 14

    这样使用if / else if / else是一种好的做法吗?

  15. 15

    使用通用的FindViewById是一种不好的做法吗?

  16. 16

    开关盒不间断是一种不好的做法吗?

  17. 17

    在视图中读取文件是一种不好的做法吗?

  18. 18

    C# 属性,这是一种不好的做法吗?

  19. 19

    Firebase中的静态数据是一种不好的做法?

  20. 20

    将事件的逻辑以一种单独的方法添加到触发该事件的方法中,这是一种很好的做法吗?

  21. 21

    PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

  22. 22

    让一个用户拥有共享中的每个文件/目录是一种不好的做法吗?

  23. 23

    PHPUnit:在一个测试中对模拟方法使用多个断言是一种不好的做法吗?

  24. 24

    使用Java中的getter方法将元素添加到List是一种不好的做法吗?

  25. 25

    在Java中,使用nextLine()重新分配给相同的字符串变量是一种不好的做法吗?

  26. 26

    将静态属性包含在存储库中可以吗,或者这是一种不好的做法?

  27. 27

    当我需要“刷新”或“更新”视图时,为ViewModel中的每个属性调用RaisePropertyChanged()是一种不好的做法吗?

  28. 28

    将函数名称存储在变量中并使用变量调用函数是一种不好的做法吗?

  29. 29

    一个活动具有多个xml是一种不好的做法吗?

热门标签

归档