Digamos que eu tenha duas tabelas: users
e tweets
. Quero exibir um perfil de usuário completo e os tweets mais recentes por ID.
É melhor buscá-los em duas chamadas separadas, possivelmente simultâneas/paralelas? em JS seria:
const result = await Promise.all(
query(`SELECT * FROM users WHERE id = 1`),
query(`SELECT * FROM tweets WHERE user_id = 1`)
);
const profile = result[0];
const tweets = result[1];
OU
faça uma consulta, junte-se simplesmente e recupere os dados do usuário, digamos, do primeiro elemento da matriz? por exemplo
// pseudo code
const tweets = await query(`
SELECT * FROM users
JOIN tweets
ON users.id = tweets.id
WHERE users.id = 1`)
if (tweets.length > 0) {
const { username, avatar } = tweets[0]; // reading any column to get user data
}
A segunda consulta está apenas desperdiçando largura de banda porque os dados do usuário são copiados em todas as colunas?
De alguma forma, percebi que é uma má prática fazer várias chamadas sql e, mesmo em um cenário tão simples, não sei se estou complicando demais as coisas.