gpt4 book ai didi

sql - 如何生成记录并将它们从表中成对传播?

转载 作者:行者123 更新时间:2023-11-29 12:27:58 24 4
gpt4 key购买 nike

我必须在大约 4 万个目的地之间生成大约一百万次随机旅行。每个目的地都有自己的权重(total_probability),权重越大,应该从这个地方开始或结束的行程就越多。

行程应该随机生成,但目的地(起点和终点)应该按概率加权,或者可以预先计算出确切的行程数(将每个权重除以权重总和,乘以1M 并四舍五入为整数)。

问题是如何在不生成包含所有目标对的 40K*40K 表的情况下在 PostgreSQL 中实现它。

          Table "public.dests"
Column | Type | Modifiers
-------------------+------------------+-----------
id | integer |
total_probability | double precision |

Table "public.trips"
Column | Type | Modifiers
------------+------------------+-----------
from_id | integer |
to_id | integer |
trips_num | integer |
...
some other metrics...

旅行的主键是 (from_id, to_id)我应该生成一个包含 1M 记录的表然后迭代更新它,还是一个包含 1M 插入的 for 循环就足够快了?我在 2 核轻型笔记本电脑上工作。

P.S. 我放弃了,用 Python 做了这个。要在 Python 中执行一组查询和转换,我将从 Python 而不是 shell 脚本运行 SQL 脚本。感谢您的建议!

最佳答案

在 9.1 中,您可以在 VIEW 上使用 TRIGGER,这可以有效地让您创建物化 View (尽管是手动的)。我认为您的第一次运行可能很昂贵,但使用循环可能是可行的方法,但在那之后,我会使用一系列 TRIGGER 来维护表中的数据。

在一天结束时,您需要决定是要为每个查询计算结果,还是通过物化 View 记住结果。

关于sql - 如何生成记录并将它们从表中成对传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245966/

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