我发现这方面的信息/意见令人惊讶.
直接在sql(在本例中是postgresql)层( Select 特定的列)上进行序列化是更好的吗?还是首先获取整个记录(所有列),然后在应用层中格式化数据,在性能方面是完全合适的?
在NodeJS类型脚本场景中,我个人喜欢通过简单的函数util函数在应用程序层进行序列化,并使用某些TS接口精确定义最终数据将是什么样子.在我看来,这种方法将是相当轻量级和模块化的,然而,我想知道是否有这样做不可取的情况?
如果我们能买到100张唱片有关系吗?如果每行有100列,会有什么关系吗?我的理解是,数据库的主要负担是实际的数据获取、基于复杂筛选器的查询和连接,或者每条记录查询多少列也会产生显著差异?
为了给出一个易于理解的代码示例:
const user = await User.findOne({ where: { email }, attributes: ['email', 'username', 'id'] });
// which will be converted to:
SELECT email, username, id FROM users WHERE email = 'some email';
vs.
const user = await User.findOne({ where: { email } });
// which will be converted to:
SELECT * FROM users WHERE email = 'some email';
// serialization happens afterwards on the backend app layer
const serializedUser = serializeUser(user);