gpt4 book ai didi

ruby - 从两个未连接的数据集中获取前 N 条记录

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:41 25 4
gpt4 key购买 nike

我有两个 Rails 服务,它们从不同的数据库返回数据。在一个数据集中,我的记录的字段如下所示:

query, clicks, impressions

在第二个记录中,我有这样的字段:

query, clicks, visitors

我想要做的是从合并集中获取分页数据,匹配查询。但它还需要包括一个或另一个数据集中存在的所有记录,然后按“点击次数”列对它们进行排序。

在 SQL 中,如果这两个表在同一个数据库中,我会这样做:

SELECT COALESCE(a.query, b.query), a.clicks, b.clicks, impressions, visitors 
FROM a OUTER JOIN b ON a.query = b.query
LIMIT 100 OFFSET 1
ORDER BY MAX(a.clicks, b.clicks)

每个数据集的单个“前 100”会产生不正确的结果,因为数据集“a”中的“点击次数”可能明显高于或低于数据集“b”。

因为它们不在同一个数据库中,所以我正在寻求有关使这种查询高效且干净的算法的帮助。

最佳答案

我从来没有找到在数据库之外执行此操作的方法。最后,我们只是使用 PostgreSQL 的 Foreign Data Wrapper 功能将两个数据库连接在一起,并使用 PostgreSQL 处理排序和分页。

对于任何沿着这条路走下去的人来说,一个技巧是,我们在远程服务器上构建了 VIEW,它提供了上面 a 中所需的数据。这比尝试通过远程连接连接表快数千倍,因为索引的值丢失了。

关于ruby - 从两个未连接的数据集中获取前 N 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22801447/

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