Второй запрос (включающий подзапрос) может быть более производительным. Это основано на интерпретации из плана объяснения Hive и на выполнении этих запросов несколько раз.
План объяснения для запроса 1 (без подзапроса) имеет этот раздел:
Group By Operator [GBY_2]
aggregations:["count(user_id)"]
keys:CASE (type) WHEN ('a') THEN ('A') WHEN ('b') THEN ('B') ELSE ('C') END (type: string)
С другой стороны, тот же раздел для запроса 2 (с подзапросом) имеет это:
Group By Operator [GBY_3]
aggregations:["count(_col1)"]
keys:_col0 (type: string)
Исходя из плана, похоже, что запрос 2 выполняет чуть меньше работы.
Также запустил тест на фиктивных данных и получил эти времена выполнения.
Query 1: (1st time) 6.43 s, (2nd time) 5.92 s, (3rd time): 4.30s
Query 2: (1st time) 0.82 s, (2nd time) 1.29 s, (3rd time): 1.03s
Запрос 2 выполняется быстрее во всех случаях.