我正在运行两个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毫秒。为什么会这样?
答案 0 :(得分:1)
通常,在from
子句中放置两个标量查询不会影响性能。实际上,从应用程序的角度来看,一个查询可能更快,因为来回数据库的开销更少。标量查询返回一列和一行。
但是,如果查询返回多行,那么您的小逗号就会执行大量的笛卡尔积(这就是为什么我总是使用CROSS JOIN
而不是FROM
子句中的逗号。在这种情况下,所有投注均已关闭,因为必须在结果开始返回后处理数据。