Postgresql 与具有单行的表交叉联接
我的Postgresql 与具有单行的表交叉联接,postgresql,cross-join,Postgresql,Cross Join,我的table1有25000多行,而table2只有一行。它们都有近30列。我需要将table2中的所有列(只有一行)添加到table1中的列,以便进行进一步的计算。一种方法是 select * from table1 cross join table2 它给出了期望的结果,但性能不好 我想知道是否有更好或更快的方法来获得组合表。我正在使用PostgreSQL 这是来自的输出 explain analyze select * from table1 cross join table2 Nes
table1
有25000多行,而table2
只有一行。它们都有近30列。我需要将table2
中的所有列(只有一行)添加到table1
中的列,以便进行进一步的计算。一种方法是
select * from table1 cross join table2
它给出了期望的结果,但性能不好
我想知道是否有更好或更快的方法来获得组合表。我正在使用PostgreSQL
这是来自的输出
explain analyze select * from table1 cross join table2
Nested Loop (cost=0.00..195264.90 rows=15533650 width=336) (actual time=0.013..46.189 rows=25465 loops=1)
-> Seq Scan on table1 (cost=0.00..1076.65 rows=25465 width=232) (actual time=0.007..6.912 rows=25465 loops=1)
-> Materialize (cost=0.00..19.15 rows=610 width=104) (actual time=0.000..0.000 rows=1 loops=25465)
-> Seq Scan on table2 (cost=0.00..16.10 rows=610 width=104) (actual time=0.001..0.002 rows=1 loops=1)
Planning time: 0.153 ms
Execution time: 50.868 ms
谢谢。请回答您的问题,并添加使用
解释(分析、缓冲区、格式文本)
(而不仅仅是“简单”的解释)生成的问题。或者将计划上载到查询是否比表1中的SELECT*慢很多?优化器认为表2包含610行。运行分析表2代码>(或真空分析表2;
),然后再次检查计划您期望的性能如何?对于25000行和60列,50ms对我来说似乎很好。真正的问题实际上是将所有结果交付给客户端和/或在客户端进行渲染所需的传输时间(我预计这会大大超过50ms)?那么传输(和显示)行会浪费大量时间。因为查询在服务器上只需要50毫秒,而不是11秒。