Как эффективно объединить большие таблицы в SQL, где одна таблица не имеет общего столбца с другими? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь сопоставить свой каталог с данными в Интернете. Онлайн данные хранятся в трех разных таблицах. Мой запрос работает и выглядит следующим образом:

SELECT *,
  DISTANCE(EPOCH_PROP_POS(g.ra, g.dec, g.parallax, g.pmra, g.pmdec, g.radial_velocity, g.ref_epoch, 2000.0), POINT('ICRS', x.ra, x.ra))*3600 as angular_separation

FROM gaiadr2.gaia_source as g, my_table.segue as x
JOIN gaiadr2.ruwe AS r ON g.source_id = r.source_id
JOIN external.gaiadr2_geometric_distance AS d ON g.source_id = d.source_id

WHERE CONTAINS(POINT('ICRS', x.ra, x.dec), CIRCLE('ICRS', g.ra, g.dec, 10.0/3600))=1 AND
g.parallax_over_error > 3 AND
d.r_est > 0 AND
g.parallax > 0
ORDER BY x.segue_oid,angular_separation

Где g.ra и g.de c - это, в основном, координаты, где я размещаю радиус и принимаю все попадания в этом радиусе.

Поскольку gaiadr2.gaia_source, gaiadr2.ruwe и external.gaiadr2_geometric_distance - это все таблицы с 1,8 миллиардами строк, мне было интересно, есть ли более эффективный способ объединения и, в конечном счете, ускорение выполнения запроса

...