当前位置: 首页 > 知识库问答 >
问题:

WHERE子句中分区列的顺序是否重要

苗阳
2023-03-14

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

共有1个答案

冉子石
2023-03-14

不,那个命令应该无关紧要。任何合适的查询优化器都会查看WHERE子句的所有部分,并找出满足该查询的最有效方法。为了更好地理解,使用分区列的逻辑顺序编写查询仍然是有意义的。

 类似资料:
  • 问题内容: 如果我有两列,一列具有非常高的基数,而另一列具有非常低的基数(值的唯一数目),那么按哪个顺序分组是否重要? 这是一个例子: 在某些情况下重要吗? 问题答案: 不,顺序对于GROUP BY子句无关紧要。 MySQL和SQLite是我所知道的仅有的数据库,它允许您选择按组方式(非标准,不可移植)从组中省略的列,但是顺序也不重要。

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

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

  • 我对一个< code>select有一些奇怪的问题。< code>WHERE子句中的顺序可能会影响结果吗? 这是我的选择: 这将重现这个结果:http://dl.dropbox.com/u/4892450/sqlSelectProblem/select1.PNG 当我使用这个条件时: (不同的顺序) 我得到一个不同的结果(参见 列): http://dl.dropbox.com/u/4892450

  • 问题内容: 我有一个查询: 我只想从表中选择周期和年份等于的行: 我知道最简单的方法是使用连接,但是问题是-在应用程序中,我只能在后面添加一个子句 因此,解决方案应该是: 那可能吗? 编辑: 结果应与以下相同: 问题答案: 您可以为条件使用多个列: 但是戈登的解决方案可能更快。

  • 错误:java.SQL.sqlsyntaxerrorexception:您的SQL语法中有一个错误;请查看与您的MariaDB服务器版本相对应的手册,以便在第1行'by name'附近使用正确的语法