我是postgresql(以及一般的SQL)的新手,我现在最关心的是优化。下面我有一个简单的查询。但是我相信它只是一个查询。但是,它也可能只是3个查询(新的联合所有的查询)。或者它实际上可能是6个查询,因为实际上有6个选择语句。
with foo as (
select * from tableA
), bar as (
select * from tableB
), zeta as (
select * from tableC
)
select * from foo
union all
select * from bar
union all
select * from zeta
上述查询有多少个查询?
...也
这个问题很重要的原因是因为,我不知道是否应该像上面那样编写我的查询,或者只是将所有查询分开。
select * from tableA; --query 1
select * from tableB; --query 2
select * from tableC; --query 3
答案 0 :(得分:1)
正式地,它是一个复杂的查询(作为“复杂句子”),其中包含六个“简单”查询。你不需要这些with statements
,因为事实上他们什么都不做。您的第一个查询应如下所示:
select * from tableA
union all
select * from tableB
union all
select * from tableC;
在这种情况下,您将获得一组行作为结果。如果你执行
select * from tableA;
select * from tableB;
select * from tableC;
你将有三组不同的行。