leofc
leofc
PPrisma
Created by leofc on 5/29/2025 in #help-and-questions
Recommendations not showing up
Started using Optimize. Clicked in recording, saw the queries coming. Stopped the recording. Clicked in the recommendations: "There are no recommendations just yet, they will appear after you end your recording.". Out of 9 recording, I only got recommendations in 2. Is that a bug in your UI?
6 replies
PPrisma
Created by leofc on 5/28/2025 in #help-and-questions
How to remove `[optimize] HTTP 409 Conflict: There is no active recording to write queries to.`
My current client:
const prismaClientSingleton = (): PrismaClient => {
return new PrismaClient({
datasources: {
db: {
url: process.env.DATABASE_URL,
},
},
log: [{ emit: 'event', level: 'query' }],
}).$extends(
withOptimize({
apiKey: process.env.OPTIMIZE_API_KEY,
showNotification: false,
enable: process.env.PRISMA_OPTIMIZE_ENABLED === 'true',
}),
) as PrismaClient;
};
const prismaClientSingleton = (): PrismaClient => {
return new PrismaClient({
datasources: {
db: {
url: process.env.DATABASE_URL,
},
},
log: [{ emit: 'event', level: 'query' }],
}).$extends(
withOptimize({
apiKey: process.env.OPTIMIZE_API_KEY,
showNotification: false,
enable: process.env.PRISMA_OPTIMIZE_ENABLED === 'true',
}),
) as PrismaClient;
};
9 replies
PPrisma
Created by leofc on 5/23/2025 in #help-and-questions
Prisma performance questions
Let's say I have this schema:
model Tenant {
id String @id @default(cuid())
name String

customers Customer[]
users User[]
salesOrders SalesOrder[]
}

model Customer {
id String @id @default(cuid())
name String
tenantId String
tenant Tenant @relation(fields: [tenantId], references: [id])

salesOrders SalesOrder[]
}

model User {
id String @id @default(cuid())
name String
tenantId String
tenant Tenant @relation(fields: [tenantId], references: [id])

salesOrders SalesOrder[]
}

model SalesOrder {
id String @id @default(cuid())
customerId String
customer Customer @relation(fields: [customerId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])

tenantId String
tenant Tenant @relation(fields: [tenantId], references: [id])
}
model Tenant {
id String @id @default(cuid())
name String

customers Customer[]
users User[]
salesOrders SalesOrder[]
}

model Customer {
id String @id @default(cuid())
name String
tenantId String
tenant Tenant @relation(fields: [tenantId], references: [id])

salesOrders SalesOrder[]
}

model User {
id String @id @default(cuid())
name String
tenantId String
tenant Tenant @relation(fields: [tenantId], references: [id])

salesOrders SalesOrder[]
}

model SalesOrder {
id String @id @default(cuid())
customerId String
customer Customer @relation(fields: [customerId], references: [id])
userId String
user User @relation(fields: [userId], references: [id])

tenantId String
tenant Tenant @relation(fields: [tenantId], references: [id])
}
I want to create a query that gets all the sales orders for a given tenant.
const salesOrders = await prisma.salesOrder.findMany({
include: {
customer: true,
user: true,
},
where: {
tenantId: tenant.id,
},
});
const salesOrders = await prisma.salesOrder.findMany({
include: {
customer: true,
user: true,
},
where: {
tenantId: tenant.id,
},
});
For context, this is a multi-tenant application sharing the same database. Looking at some slowness, I assume this would be better, correct?
const salesOrders = await prisma.salesOrder.findMany({
include: {
customer: true,
user: true,
},
where: {
tenantId: tenant.id,
customer: {
tenantId: tenant.id,
},
user: {
tenantId: tenant.id,
},
},
});
const salesOrders = await prisma.salesOrder.findMany({
include: {
customer: true,
user: true,
},
where: {
tenantId: tenant.id,
customer: {
tenantId: tenant.id,
},
user: {
tenantId: tenant.id,
},
},
});
Another thing we don't have is indexes on the tenantId fields. I assume this would also help, correct? What other things could we do to improve the performance of this query?
9 replies