我有两个大型数据集/来源。我想按新数据集的字段之一(浮点类型)执行最小-最大排序。新数据集由这两个源数据集组合而成。
我应该应用什么类型的算法或转换/排序方法才能获得最短的执行时间?
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);