table1:
columns: id, name
table2:
columns: id, name
assoc_table1_table2:
columns: id_table1, id_table2
Мне нужно выбрать все строки из table1
, где хотя бы одна строка в table2
связана с этой строкой.
Какой эффективный способ сделать это? Или, вернее, как-то?
Я думаю о:
SELECT DISTINCT t.id, t.name
FROM table1 t
JOIN assoc_table1_table2 a ON t.id=a.id_table1;
или
SELECT id, name
FROM table1 t WHERE EXISTS (
SELECT *
FROM assoc_table1_table2 a
WHERE t.id=a.id_table1
);
Любые идеи о том, что из вышеперечисленного, как правило, быстрее?
(очевидные индексы на месте)