oppddd
V2EX  ›  Node.js

typeorm.js mysql 查询性能疑问

  •  
  •   oppddd · Oct 25, 2022 · 4683 views
    This topic created in 1323 days ago, the information mentioned may be changed or developed.

    哪个性能好?

    // 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 replies    2022-10-26 09:56:53 +08:00
    optional
        1
    optional  
       Oct 25, 2022
    一般情况肯定是 2 的性能比较好(只考虑数据库)。
    但是如果放到实际项目中如果考虑缓存系统的话,1 的适应度反而会更高,缓存更友好更好控制。
    lmshl
        2
    lmshl  
       Oct 25, 2022
    必然是 2 性能好,缓存交给数据库自己去做就行,这种主键检索数据库自己的缓存比什么都快
    oppddd
        3
    oppddd  
    OP
       Oct 25, 2022 via iPhone
    @optional 适应度更高是因为都是 js, 缓存更友好没理解是啥意思,大佬解惑下
    optional
        4
    optional  
       Oct 26, 2022 via iPhone
    @liuxsen93 通过内部 api 获取对象的时候,因为都是通过主键操作增删改查,可以通过 id 去控制对象的缓存同步。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3206 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 116ms · UTC 13:51 · PVG 21:51 · LAX 06:51 · JFK 09:51
    ♥ Do have faith in what you're doing.