首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从大表中有效地选择不同的(a,b)

从大表中有效地选择不同的(a,b)
EN

Stack Overflow用户
提问于 2019-05-16 17:04:12
回答 1查看 1.9K关注 0票数 1

我在Postgres 9.6DB中有一个大约5,400万行的表,并且希望找到两列的所有不同对(大约有400万这样的值)。我对这两栏有一个索引:

代码语言:javascript
复制
create index ab_index on tbl (a, b)

获得这种配对最有效的方法是什么?我试过:

代码语言:javascript
复制
select a,b
from tbl
where a>$previouslargesta
group by a,b
order by a,b
limit 1000

还包括:

代码语言:javascript
复制
select distinct(a,b)
from tbl
where a>previouslargesta
order by a,b
limit 1000

同样,这个递归查询:

代码语言:javascript
复制
with recursive t AS (
  select min(a) AS a from tbl
  union all
  select (select min(a) from tickets where a > t.a)
  FROM t)
select a FROM t

但所有的都是血。

有更快的方法来获取这些信息吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 12:35:27

我不能保证Postgres的性能,但这是我在类似情况下在sql server上使用的一种技术,比其他技术更快:

把A变成临时的a

将不同的B转换成临时的b

将a和b温度交叉到笛卡尔,生成临时abALL。

对abALL进行排序(可选)

创建一个视图myview作为从tbl (your_main_table)中选择top 1a,b

将临时abALL与myview连接到临时abCLEAN中

如果你没有超过等级的话,在这里排名abCLEAN

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56173416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档