Полу присоединиться к AWS Афина - PullRequest
0 голосов
/ 07 июля 2019

Я хотел знать, есть ли способ использовать SEMI JOIN на AWS Athena (управляемый presto). Я хочу попробовать уменьшить количество отсканированных данных / улучшить производительность запросов.

В моем случае я знаю, что в одной стороне соединения находится ТОЛЬКО ОДИН ряд, и я подумал, есть ли способ проинструктировать двигатель об этом ...

1 Ответ

0 голосов
/ 07 июля 2019

Было бы полезно, если бы вы опубликовали пример того, чего вы хотите достичь и как он сканирует слишком много. Ваш вопрос очень широкий и трудно ответить.

Если я вас правильно понимаю, я думаю, что вы можете достичь того, на что вы ссылаетесь, сделав что-то вроде:

SELECT *
FROM table1
WHERE something IN (SELECT something FROM table2 WHERE col1 = 'the thing' LIMIT 1)

Но уменьшит ли это количество отсканированных данных, зависит от ваших конкретных обстоятельств. Идея, лежащая в основе вышеприведенного запроса, заключается в том, что Athena проверяет только table2, пока не найдет конкретную строку, к которой вы хотите присоединиться. Если вам не повезет, она все равно будет сканировать всю таблицу, поскольку не может найти значение или значение находится в конце.

Вы также можете использовать … WHERE EXISTS (SELECT …, но согласно эта проблема Presto преобразуется в объединение и может означать, что вся таблица читается - хотя с LIMIT это может быть не случай.

...