按一个大型数据集中的字段之一进行最小-最大排序

问题描述 投票:0回答:1

我有两个大型数据集/来源。我想按新数据集的字段之一(浮点类型)执行最小-最大排序。新数据集由这两个源数据集组合而成。

我应该应用什么类型的算法或转换/排序方法才能获得最短的执行时间?

postgresql algorithm sorting data-processing large-data-volumes
1个回答
0
投票

Create index
,然后从两个数据集各自的
least()
/
greatest()
中获取
min()
/
max()
db<>fiddle 的演示:

create index on dataset1(dim);
create index on dataset2(dim);

select least(   d1.min_dim, d2.min_dim) as min, 
       greatest(d1.max_dim, d2.max_dim) as max
from (select min(dim) min_dim, max(dim) max_dim from dataset1) d1, 
     (select min(dim) min_dim, max(dim) max_dim from dataset2) d2;

有了索引,这并不重要,但如果没有索引,上面的方法比从两组中获取

union all
和从中获取单个
min()
/
max()
的替代方案要快一些: 演示2

select min(dim),max(dim) 
from (table dataset1 union all table dataset2);
© www.soinside.com 2019 - 2024. All rights reserved.