V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oppddd
V2EX  ›  Node.js

typeorm.js mysql 查询性能疑问

  •  
  •   oppddd · 2022-10-25 18:56:28 +08:00 · 4060 次点击
    这是一个创建于 765 天前的主题,其中的信息可能已经有所发展或是发生改变。

    哪个性能好?

    // 1. 多次查询
    const users = await Promise.all(userIds.map(id => {
      return this.userRepository.findOne({
        where: {
          id
        }
      })
    }))
    
    // 2. 一次查询
    const users = await this.userRepository.createQueryBuilder('user')
      .where('user.id IN (:...ids)', { ids: userIds })
      .getMany()
    
    
    
    4 条回复    2022-10-26 09:56:53 +08:00
    optional
        1
    optional  
       2022-10-25 19:10:14 +08:00
    一般情况肯定是 2 的性能比较好(只考虑数据库)。
    但是如果放到实际项目中如果考虑缓存系统的话,1 的适应度反而会更高,缓存更友好更好控制。
    lmshl
        2
    lmshl  
       2022-10-25 21:18:45 +08:00
    必然是 2 性能好,缓存交给数据库自己去做就行,这种主键检索数据库自己的缓存比什么都快
    oppddd
        3
    oppddd  
    OP
       2022-10-25 23:13:47 +08:00 via iPhone
    @optional 适应度更高是因为都是 js, 缓存更友好没理解是啥意思,大佬解惑下
    optional
        4
    optional  
       2022-10-26 09:56:53 +08:00 via iPhone
    @liuxsen93 通过内部 api 获取对象的时候,因为都是通过主键操作增删改查,可以通过 id 去控制对象的缓存同步。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2545 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:56 · PVG 23:56 · LAX 07:56 · JFK 10:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.