我有两个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”。
由于它们不在同一个数据库中,我正在寻找有助于使这种查询高效和清洁的算法的帮助。
答案 0 :(得分:0)
我从来没有找到过在数据库之外执行此操作的方法。最后,我们只使用PostgreSQL的Foreign Data Wrapper功能将两个数据库连接在一起,并使用PostgreSQL处理排序和分页。
对于任何前进这条路径的人来说,我们在远程服务器上构建了VIEW,提供了上面a
所需的数据。这比尝试通过远程连接连接表快几千倍,因为索引的值丢失了。