如果我们有一个由col,col2,col3分区的HIVE表,那么当我想在WHERE子句中指定这些列时,在此表上执行SELECT时,它们是否必须以相同的顺序出现才能利用它分区?我的意思是,从逻辑上讲是肯定的,但HIVE编译器不了解它们的实际顺序而不管我指定它们的顺序。它应该能够在内部应用正确的顺序,因为HIVE已经知道正确的顺序是col2,col2,col3 so它以这种方式使用它。 HIVE在我们定义的查询之上进行了大量优化,因此我猜它应该做同样的事情。
答案 0 :(得分:1)
不,那个顺序无关紧要。任何体面的查询优化器都将查看WHERE子句的所有部分,并找出满足该查询的最有效方法。使用分区列的逻辑顺序编写查询仍然有意义,以便更好地理解人类。