假设我有下表 Playground
:
serialnumber length breadth country
1 15 10 Brazil
2 12 11 Chile
3 14 10 Brazil
4 14 10 Brazil
现在,我想在表格中添加一列区域
,本质上是长度*宽度
。
显然,我可以进行此更新:
UPDATE playground set area = length*breadth where country = 'Brazil'.
使用上述语句,我将不得不为序列号 3 和 4 计算两次长度 * 宽度。有没有办法添加 group by
并最大限度地减少计算量?
类似于:
UPDATE playground set area = length*breadth where country = 'Brazil'
group by length, breadth;
最佳答案
首先要注意的是,您不应将区域添加为列。恰好是简单算术运算结果的数据项不需要自己的列。
第二点是,您无需担心对第 3 行和第 4 行各执行一次乘法运算。这对服务器来说几乎是零工作量
第三点是,如果您担心第3行和第4行,那意味着它们是重复的,并且重复的数据不应该在数据库中。考虑删除重复项,如下所述:https://wiki.postgresql.org/wiki/Deleting_duplicates
关于postgresql - 将计算值添加为新列,同时删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621230/