假设我有两个表:users
和tweets
。我想显示完整的用户个人资料,以及按 ID 列出的最新推文。
在两个单独的、可能并发/并行的调用中获取它们是否更好?在 JS 中将是:
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];
或者
进行一个查询,简单连接并从数组的第一个元素检索用户数据?例如
// 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
}
第二个查询是否只是浪费带宽,因为用户数据是在每一列上复制的?
不知何故,我一直认为进行多个 sql 调用是不好的做法,即使在如此简单的场景中,我也不知道我是否使事情变得过于复杂。