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秒。