Mic*_*ler 3 postgresql repository-pattern typeorm nestjs
我正在使用带有 TypeORM 和 PostgreSQL 的 NestJS 框架。假设我有一个简单的User实体,它只有两个属性:id和name
@Entity()
class User {
@PrimaryGeneratedColumn()
id: string;
@Column({
type: 'varchar'
})
name: string;
Run Code Online (Sandbox Code Playgroud)
问题:
比usersRepository.findOne(id)快吗usersRepository.findOne({ id })?
我认为这usersRepository.findOne(id)会比不在索引中更快usersRepository.findOne({ name }),name不是吗?
我创建了一个包含 500 000 个项目的表,并对一些方法进行了基准测试(这些方法已被调用 100 000 次):
\n| 方法 | 平均时间 [\xc2\xb5s] |
|---|---|
this.usersRepository.query(\'SELECT * FROM "users" WHERE id = 258\') | 163.98 |
this.usersRepository.query(\'SELECT * FROM "users" WHERE name = "John"\') | 143.77 |
this.usersRepository.findByIds([258]) | 343.99 |
this.usersRepository.findOne(258) | 326.64 |
this.usersRepository.findOne({ id: 258 }) | 338.89 |
this.usersRepository.findOne({ name: "John" }) | 298.40 |
那么它看起来findOne(id)并不比 快(很多)findOne({ id })。而且,findOne({ name })也有类似的结果。然而,看起来使用自定义查询是最好的选择。
| 归档时间: |
|
| 查看次数: |
9036 次 |
| 最近记录: |