Есть ли какая-либо выгода для подзапроса, который выбирает только из одной таблицы? - PullRequest
0 голосов
/ 01 июля 2019

Я работаю с устаревшим HiveQL. Я приведу пример, который примерно эквивалентен, но гораздо проще:

CREATE TABLE IF NOT EXISTS output_table
STORED AS [...]
AS
SELECT cust.*,
 ord.id,
 ord.amount
FROM
 Customer cust
 LEFT JOIN (SELECT id, date, amount FROM Order) as ord

Мне сказали, что логическое обоснование подзапроса состоит в том, что в Order есть как большое количество строк, так и столбцов, поэтому более эффективно не сканировать все столбцы. Это кажется мне нелогичным, основываясь на традиционном опыте СУРБД. Я ожидаю, что подзапрос будет более дорогим, чем объединение всей таблицы, поскольку кажется, что неиспользуемые столбцы не должны влиять на производительность.

(Фактический QL составляет около 55 строк и содержит около 5 или 6 соединений. В объединяемой таблице содержится около 450 миллионов строк и 61 столбца. Я не уверен насчет индексов; я обновлю этот вопрос после того, как найду эта информация.)

...