我在Postgres 9.6DB中有一个大约5,400万行的表,并且希望找到两列的所有不同对(大约有400万这样的值)。我对这两栏有一个索引:
create index ab_index on tbl (a, b)获得这种配对最有效的方法是什么?我试过:
select a,b
from tbl
where a>$previouslargesta
group by a,b
order by a,b
limit 1000还包括:
select distinct(a,b)
from tbl
where a>previouslargesta
order by a,b
limit 1000同样,这个递归查询:
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但所有的都是血。
有更快的方法来获取这些信息吗?
发布于 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
https://stackoverflow.com/questions/56173416
复制相似问题