Производительность присоединения к подзапросу в предложении Where (HIVE) - PullRequest
0 голосов
/ 14 октября 2018

Может кто-нибудь помочь мне понять, какой подход будет наиболее эффективным.

Первая таблица users_of_interest_table имеет один столбец users, который имеет ~ 1000 уникальных идентификаторов пользователя.

вторая таблица app_logs_table имеет столбец users, а также столбец app_log.В таблице содержится более 1 миллиарда строк и более 10 миллионов уникальных пользователей.

Какой самый эффективный способ получить все данные журнала приложений для пользователей в users_of_interest.Вот что я придумала до сих пор.

Вариант 1: использовать внутреннее объединение

SELECT 
  u.users, a.app_logs
FROM 
  users_of_interest_table u
INNER JOIN 
  app_logs_table a
ON 
  u.users = a.users

Вариант 2: подзапрос в предложении Where

SELECT 
  a.users, a.app_logs
FROM 
  app_logs_table a
WHERE 
  a.users IN (SELECT u.users FROM users_of_interest_table u)

1 Ответ

0 голосов
/ 10 января 2019

сообщество рекомендует использовать предложение Join, но в некоторых тестах, которые я проводил, предложение In было более эффективным

Вы должны выполнить тест самостоятельно, используйте инструмент SQL Server Profile дляэто

...