在PostgreSQL中执行此查询的每个步骤的顺序是什么?
SELECT SUM(field1)+ SUM(field2)+ SUM(field3)-SUM(field4);
我认为加法/减法以正常的操作顺序发生 - 按照直接的左右顺序。我们知道不同的SUM出现的顺序是什么吗?
这是一个长查询的子集(执行大约40秒),我认为在执行查询时,字段中的数据可能会实时更改。
答案 0 :(得分:2)
我认为在执行查询时,字段中的数据可能会实时更改
由于事务隔离,PostgreSQL将确保数据完整性。
因此,无论查询运行多长时间,所有SUM
都将被评估为好像它们在同一时刻运行。
参考文献:
答案 1 :(得分:1)
zerkms的回答削减了你真正需要知道的要点,并且是正确的。在这种简单的情况下,事务隔离将确保您不会受到并发问题的影响(但请注意,它不是所有并发的神奇解决方案)。
按字面意思回答你的问题:他们实际上是交错的。
如果你写:
SELECT SUM(field1)+SUM(field2)+SUM(field3)-SUM(field4) FROM mytable;
然后Pg读取mytable
一次。它会读取每一行并将mytable.field1
提供给第一个总和,mytable.field2
到第二个总和等等。然后它会为每一行重复。
因此所有聚合都是并行完成的(尽管不使用多个CPU)。