Чернослив перед присоединением против чернослива после присоединения против чернослива во время присоединения

# #google-bigquery

Вопрос:

Какова наилучшая практика, когда необходимо выполнить объединение таблиц в подмножестве таблиц? Т. Е. Рассмотрите следующие запросы:

 WITH pruned AS (
SELECT id FROM foo WHERE timestamp >= TIMESTAMP('some timestamp')
)
SELECT bar.* FROM bar
INNER JOIN foo
ON bar.id = pruned.id
 
 SELECT bar.* FROM bar
INNER JOIN foo
ON bar.id = foo.id
WHERE foo.timestamp >= TIMESTAMP('some timestamp')
 
 SELECT bar.* FROM bar
INNER JOIN foo
ON foo.timestamp >= TIMESTAMP('some timestamp')
AND bar.id = foo.id
 

Я предполагаю, что последний подход технически является наиболее эффективным? Возможно, это зависит от данных таблиц, но я предполагаю, что BigQuery pruned временно хранит таблицу в первом подходе, так что это хуже?

Комментарии:

1. Для тех, кто голосует за то, чтобы закрыть это. Даже если это основано на мнении, было бы неплохо получить некоторое объяснение по трем различным запросам и тому, как они будут работать. Первое может быть очевидным, но что касается двух последних, то неясно, как BQ будет выполнять эти инструкции.