gpt4 book ai didi

sql - 对每个 UserId 实现限制的最快方法

转载 作者:行者123 更新时间:2023-11-29 14:25:31 24 4
gpt4 key购买 nike

我有一个有趣的问题,我想对用户可以放置的优惠数量实现特定限制。报价保存在 postgresql(版本 10)数据库中,并且不应超过 1000。

我正在使用以下 sql 查询来检查用户有多少优惠并根据限制检查它:

select count(*) from offers where offers.userId = 'b27e1d2f-c2c1-4d0b-8451-287013d7b716';

在性能指标中,我看到大部分时间都花在了这个查询上。因此我查了一下,发现了这个:https://wiki.postgresql.org/wiki/Slow_Counting

PostgreSQL will still need to read the resulting rows to verify that they exist;

在查询规划器中可以看到,除了索引之外,只需要扫描一些堆提取,我认为这会减慢整个查询:

Index Only Scan using offers_by_user_id_index on offers
Index Cond: (account_id = 'b27e1d2f-c2c1-4d0b-8451-287013d7b716'::uuid) | Heap Fetches: 650

- 有什么方法可以加快速度?

跟踪行数是加快检查速度的好方法吗?

感谢您的帮助!

编辑:UserId 是一个 UUID,UUID 列上存在索引

最佳答案

堆提取的数量表明该表没有足够频繁地清理。如果您手动对其进行 VACUUM,会加快速度吗?

关于sql - 对每个 UserId 实现限制的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58456570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com