当前位置: 首页 > 面试题库 >

列的顺序在group by子句中是否重要?

丘华翰
2023-03-14
问题内容

如果我有两列,一列具有非常高的基数,而另一列具有非常低的基数(值的唯一数目),那么按哪个顺序分组是否重要?

这是一个例子:

select 
     dimensionName, 
     dimensionCategory, 
     sum(someFact)
from SomeFact f
join SomeDim d on f.dimensionKey = d.dimensionKey
group by 
    d.dimensionName,  -- large number of unique values
    d.dimensionCategory -- small number of unique values

在某些情况下重要吗?


问题答案:

不,顺序对于GROUP BY子句无关紧要。

MySQL和SQLite是我所知道的仅有的数据库,它允许您选择按组方式(非标准,不可移植)从组中省略的列,但是顺序也不重要。



 类似资料:
  • 如果我们有一个由col、col2、col3分区的配置单元表,那么在对该表执行SELECT时,如果我想在WHERE子句中指定这些列,它们是否必须以相同的顺序出现,以便利用分区?我的意思是,逻辑上是的,但无论我以什么顺序指定它们,HIVE编译器都不能理解它们的实际顺序。它应该能够在内部应用正确的顺序,因为HIVE已经知道正确的顺序是col2、col2、col3,所以它以这种方式使用它。HIVE在我们定

  • 问题内容: 我有一个在Java程序中构造的JSON对象。 我将此对象发送到服务器,在该服务器中期望以下类型的JSON对象。 我的问题是,JSON对象的顺序在服务器端真的重要吗?如果是,如何更改订单? 问题答案: 我的问题是,JSON对象的顺序在服务器端真的重要吗? 它 不应该 没关系。根据各种JSON规范,属性的顺序并不重要。例如: “对象是一组无序的名称/值对。” (来源json.org) “对

  • 问题内容: 假设我有一个漫长而昂贵的查询,里面挤满了条件,搜索了大量的行。我还有一个特殊条件,例如公司ID,它将限制需要大量搜索的行数,将其范围从数十万缩小到几十。 我这样做是否会对MySQL性能产生任何影响: 或这个: 问题答案: 不,顺序应该不会有太大的不同。当发现哪些行与条件匹配时,将针对每一行检查整个条件(通过布尔逻辑组合的所有子条件)。 一些智能数据库引擎将尝试猜测条件的哪些部分可以更快

  • 的Javadoc表示(强调是我的): 此操作的行为显式不确定。对于并行流管道,此操作不能保证尊重流的相遇顺序,因为这样做会牺牲并行性的好处。对于任何给定的元素,操作可以在库选择的任何时间和线程中执行。如果操作访问共享状态,则它负责提供所需的同步。 同样的文本也出现在Java9早期访问Javadoc中。 如果forEach不保留遭遇顺序,则会引入bug。在报告针对NetBeans的bug之前,我想知

  • 问题内容: 我在表中有两个索引字段- 和(单个索引,不是复合索引)。 的字段值非常有限(假设它仅为0或1),因此50%的表记录具有相同的。另一方面,值来自更大的集合,因此具有相同值的记录量很小。 这些查询中的任何一个都会比另一个查询运行得更快吗? 另外,如果两个字段都没有索引,是否会改变行为? 问题答案: SQL被设计为一种声明性语言,而不是一种过程性语言。因此,查询优化器应该 不会 考虑在决定如

  • 问题内容: 我知道索引的重要性以及联接的顺序如何改变性能。我已经完成了与多列索引相关的大量阅读,但仍未找到我的问题的答案。 我很好奇我是否做多列索引,如果它们指定的顺序根本很重要。我的猜测是,不会,并且引擎会将它们视为一个组,而顺序无关紧要。但我想验证一下。 例如,从mysql的网站(http://dev.mysql.com/doc/refman/5.0/en/multiple-column- i