如何使用 Prisma 对 PostgreSQL 数据库进行采样?
How to sample a PostgreSQL database using Prisma?
假设我的 PostgreSQL 数据库中有数百万条语句,而我只想获取其中的 10000 条。但不是第一个 10000,而是一个随机的 selection of 10000(如果我也可以选择逻辑,例如 select 每 4 个语句是最好的)。
我如何使用 Prisma 执行此操作,或者 — 如果无法使用 Prisma — 使用一个很好的旧 PostgreSQL 请求?
目前,我使用此代码来限制我获得的结果数量:
const statements = await this.prisma.statement.findMany({
where: {
OR: conditions,
},
orderBy: {
createdAt: 'asc',
},
take: 10000,
});
这将使用我拥有的条件,然后按升序排列,并“取”或限制前 10000 个结果。
我可以用什么代替“take”或者我可以直接在 PostgreSQL 中发出什么请求来随机抽样我的数据库以获取记录?
截至目前,Prisma 本身不支持获取随机数据。
有一个 Feature Request 讨论了您需要的完全相同的场景。
替代方法是使用上述功能请求中描述的 queryRaw for raw database access and use PostgreSQL's random 功能。
假设我的 PostgreSQL 数据库中有数百万条语句,而我只想获取其中的 10000 条。但不是第一个 10000,而是一个随机的 selection of 10000(如果我也可以选择逻辑,例如 select 每 4 个语句是最好的)。
我如何使用 Prisma 执行此操作,或者 — 如果无法使用 Prisma — 使用一个很好的旧 PostgreSQL 请求?
目前,我使用此代码来限制我获得的结果数量:
const statements = await this.prisma.statement.findMany({
where: {
OR: conditions,
},
orderBy: {
createdAt: 'asc',
},
take: 10000,
});
这将使用我拥有的条件,然后按升序排列,并“取”或限制前 10000 个结果。
我可以用什么代替“take”或者我可以直接在 PostgreSQL 中发出什么请求来随机抽样我的数据库以获取记录?
截至目前,Prisma 本身不支持获取随机数据。
有一个 Feature Request 讨论了您需要的完全相同的场景。
替代方法是使用上述功能请求中描述的 queryRaw for raw database access and use PostgreSQL's random 功能。