Given the following hypothetical schema:
create table cidade(
cidade_id integer primary key not null,
nome varchar(40)
);
create table envios(
id integer primary key not null,
cidade_origem_id integer,
cidade_destino_id integer
);
alter table envios add foreign key (cidade_origem_id) references cidade (cidade_id);
alter table envios add foreign key (cidade_destino_id) references cidade (cidade_id);
insert into cidade values (1, 'Barbacema');
insert into cidade values (2, 'Los Angeles');
insert into cidade values (3, 'São Paulo');
insert into cidade values (4, 'Porto Velho');
insert into envios values (1, 1,2);
insert into envios values (2, 2,3);
insert into envios values (3, 3,4);
create view cidade_origem as select * from cidade;
create view cidade_destino as select * from cidade;
To search for source and destination submissions I have the following query:
select co.nome origem, cd.nome destino from envios e
inner join cidade co on co.cidade_id = e.cidade_origem_id
inner join cidade cd on cd.cidade_id = e.cidade_destino_id
What would weigh more? Leave the query as is or use two views (one for home city and one for destination city), and make the joins with those views >?
select co.nome origem, cd.nome destino from envios e
inner join cidade_origem co on co.cidade_id = e.cidade_origem_id
inner join cidade_destino cd on cd.cidade_id = e.cidade_destino_id