SQL NESTED查询优化

时间:2015-10-17 11:49:37

标签: postgresql optimization

我正在运行两个sql查询说,

select obname from table1 where obid = 12

select modname from table2 where modid = 12

两者都花费的时间非常少,比如300毫秒。

但是当我跑步时:

select obname, modname 
from (select obname from table1 where obid = 12) as alias1, 
(select modname from table2 where modid = 12) as alias2

需要3500毫秒。为什么会这样?

1 个答案:

答案 0 :(得分:1)

通常,在from子句中放置两个标量查询不会影响性能。实际上,从应用程序的角度来看,一个查询可能更快,因为来回数据库的开销更少。标量查询返回一列和一行。

但是,如果查询返回多行,那么您的小逗号就会执行大量的笛卡尔积(这就是为什么我总是使用CROSS JOIN而不是FROM子句中的逗号。在这种情况下,所有投注均已关闭,因为必须在结果开始返回后处理数据。