Я хочу присоединиться к 2 таблицам кустов. Есть ли разница в производительности между следующими операторами?
Столбцы для basic_info: user_id, имя, фамилия, день рождения, род занятий
Столбцы для account_info: user_id, account_id, тип, баланс
Запрос1:
SELECT b.user_id, a.account_id, b.name, b.lastname, a.balance
FROM account_info a
JOIN basic_info b
ON a.user_id = b.user_id
WHERE b.occupation = 'lawyer'
Запрос2:
SELECT b.user_id, a.account_id, b.name, b.lastname, a.balance
FROM account_info a
JOIN
(SELECT user_id, name, lastname
FROM basic_info
WHERE occupation = 'lawyer') b
ON a.user_id = b.user_id
Для меня 2-й выглядит более производительным. Но я не смог найти очевидного утверждения, говорящего об этом. Самое близкое, что я нашел на веб-сайте Apache, было:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins
Соединения происходят ДО WHERE CLAUSES. Итак, если вы хотите ограничить ВЫВОД объединения, требование должно быть в предложении WHERE, в противном случае оно должно быть в предложении JOIN. Большой путаницей в этом вопросе являются секционированные таблицы.
Но приведенный пример был для разделов, а не для этого случая. Есть ли официальный документ, предполагающий, что Query 2 лучше или нет?