我有一张表,里面有很多外键,我需要进行内部连接,以便进行搜索。其中可能有 10 个以上,这意味着我必须进行 10 个内部连接。与我要加入它们的庞大(数百万行)表相比,要加入的每个表可能只有几行。
我只需要知道连接是否是一种快速的方法(仅使用 Postgres),或者是否有更聪明的方法可以使用子查询或其他方式来完成。
以下是一些虚构的数据作为示例:
create table a (
a_id serial primary key,
name character varying(32)
);
create table b (
b_id serial primary key,
name character varying(32)
);
--just 2 tables for simplicity, but i really need like 10 or more
create table big_table (
big_id serial primary key,
a_id int references a(a_id),
b_id int references b(b_id)
);
--filter big_table based on the name column of a and b
--big_table only contains fks to a and b, so in this example im using
--left joins so i can compare by the name column
select big_id,a.name,b.name from big_table
left join a using (a_id)
left join b using (b_id)
where (? is null or a.name=?) and (? is null or b.name=?);