需要指导以简化此查询

时间:2019-04-11 07:43:44

标签: sql hive query-optimization hiveql

我们有很多条件的庞大查询。 但是,我们认为某些条件是不相关的 您能否让我知道这里的where子句是否可以删除

请在下面摘录带有where子句的大型查询(子查询)

SELECT f1,  ... f10 
FROM A
JOIN
SELECT f1, f2 ... f10
FROM B where PROC_DT IN (SELECT PROC_DATE FROM C)
ON A.ID = B.ID
WHERE ISNOTNULL(PROC_DT)

我认为查询已经可以从表B中获取数据时验证PROC​​_DATE了,因此我们可以在这里删除where子句。

有人可以确认我的发现吗

1 个答案:

答案 0 :(得分:1)

是的,您是正确的,因为in不能为null。我会改用内部联接,在某些情况下会更快。

SELECT f1,  ... f10 
FROM A
JOIN B ON A.ID = B.ID
join (SELECT DISTINCT PROC_DATE FROM C) AS X ON B.PROC_DT = X.PROC_DATE