代码之家  ›  专栏  ›  技术社区  ›  wcm

哪个更好:区分还是分组

  •  13
  • wcm  · 技术社区  · 17 年前

    哪个效率更高?

    SELECT  theField
    FROM    theTable
    GROUP BY theField
    

    或

    SELECT  DISTINCT theField
    FROM    theTable
    
    6 回复  |  直到 9 年前
        1
  •  29
  •   dub    17 年前

    在您的示例中,两个查询都将生成相同的执行计划,因此它们的性能相同。

    然而,他们都有自己的目的。为了使代码更容易理解,应该使用distinct to 消除重复行 分组 应用聚合运算符 (求和、计数、最大值…)。

        2
  •  10
  •   Frans Bouma    17 年前

    没关系,它会产生相同的执行计划。(至少对于这些查询)。通过允许查询分析器或SSMS在运行查询之后显示执行计划,或者服务器跟踪统计信息,这些问题很容易解决。

        3
  •  6
  •   Greg Dean    17 年前

    在大多数情况下,distinct和group by生成相同的计划,它们的性能通常是相同的

        4
  •  5
  •   Ken Yao    17 年前

    您可以检查执行计划以查找此语句的总成本。在不同的情况下,答案可能会有所不同。

        5
  •  2
  •   Dana    17 年前

    嗯……据我在运行类似查询的执行计划中看到的,它们是相同的。

        6
  •  0
  •   auntyellow    9 年前

    在MySQL中,如果字段没有索引,distinct似乎比group by快一些。仅区别 消除重复行 但分组似乎 分类 另外。