Hive 蜂巢中条件的先后顺序重要吗?
我得到的查询结果不同,唯一的区别是where条件的顺序。 这可能是因为源表有问题Hive 蜂巢中条件的先后顺序重要吗?,hive,hql,hiveql,Hive,Hql,Hiveql,我得到的查询结果不同,唯一的区别是where条件的顺序。 这可能是因为源表有问题 SELECT * FROM source WHERE ((submission <> 'Y' or submission is NULL) and payment >0.01) OR (submission='Y' and payment_2 > 0.01); Result 1: +----------+-------------+-------------+------------+-
SELECT *
FROM source
WHERE ((submission <> 'Y' or submission is NULL) and payment >0.01)
OR (submission='Y' and payment_2 > 0.01);
Result 1:
+----------+-------------+-------------+------------+----------+
| Name | entry | submission | payment_2 | payment |
+------------------------------+-------------+-----------------+
| abc | 1 | NULL | 0.0 | 790.5 |
+----------+-------------+-------------+------------+----------+
Query 2:
SELECT *
FROM source
WHERE (submission='Y' and payment_2 > 0.01)
OR ((submission <> 'Y' or submission is NULL) and payment >0.01);
Result 2:
+----------+-------------+-------------+------------+----------+
| Name | entry | submission | payment_2 | payment |
+------------------------------+-------------+-----------------+
+----------+-------------+-------------+------------+----------+```
挑选*
来源
其中((提交“Y”或提交为空)和付款>0.01)
或(提交时间为Y,付款时间为2>0.01);
结果1:
+----------+-------------+-------------+------------+----------+
|名称|条目|提交|付款| 2 |付款|
+------------------------------+-------------+-----------------+
|abc | 1 |空| 0.0 | 790.5|
+----------+-------------+-------------+------------+----------+
问题2:
挑选*
来源
其中(提交时间和付款时间>0.01)
或((提交“Y”或提交为空)且付款>0.01);
结果2:
+----------+-------------+-------------+------------+----------+
|名称|条目|提交|付款| 2 |付款|
+------------------------------+-------------+-----------------+
+----------+-------------+-------------+------------+----------+```
条件的顺序无关紧要。您确定表在执行这些查询之间没有变化吗?您好@VamsiPrabhala,不,表是相同的。我使用了设置hive.optimize.index.filter=false现在,查询的两个顺序的计数都相同。但我不知道这个属性有什么帮助。它也碰巧增加了计数。我的意思是,例如,查询1给了我20个计数,查询2给了我30个计数。但将此属性设置为false后的两个查询都给出了45个计数。所有45个都是有效的。不确定这个属性是什么。