Skip to content

Commit

Permalink
feat: optimize recommendation for db.money (#6517)
Browse files Browse the repository at this point in the history
  • Loading branch information
ankur-arch authored Dec 12, 2024
1 parent 5032bd3 commit 8439c2b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
1 change: 1 addition & 0 deletions content/700-optimize/300-recordings.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ When a recording session ends, Optimize generates recommendations such as:
- [Queries on unindexed columns](/optimize/recommendations/queries-on-unindexed-columns)
- [Repeated query](/optimize/recommendations/repeated-query)
- [Overfetching](/optimize/recommendations/select-returning)
- [Using `@db.Money`](/optimize/recommendations/avoid-db-money)

:::info
Use [Prisma AI](/optimize/prisma-ai) to ask follow-up questions about a recommendation.
Expand Down
28 changes: 28 additions & 0 deletions content/700-optimize/400-recommendations/600-avoid-db-money.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: 'Using @db.Money'
metaTitle: 'Optimize Recommendations: Avoid usage of `@db.Money`'
metaDescription: "Learn about the recommendation provided by Optimize for using `@db.Money` native type."
tocDepth: 3
toc: true
---

Optimize provides recommendations to help you identify and resolve performance issues caused by the use of `@db.Money` type.

The following model uses the `@db.Money` native type:

```prisma
model Item {
// ...
price Decimal @db.Money
// ...
}
```

## What is the problem?

The `@db.Money` data type in PostgreSQL is not ideal for storing monetary values. Internally, `@db.Money` is implemented as an integer, which offers speed but lacks flexibility. It handles fractional values and rounding in unexpected ways, which can lead to inaccuracies.

Additionally, the `@db.Money` type does not store any information about the associated currency. Instead, it relies on the global `lc_monetary` locale setting, which may not be suitable for all use cases.

For more information, refer to the [PostgreSQL documentation](https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_money).

0 comments on commit 8439c2b

Please sign in to comment.