使用max函数会导致用于增加的字节数

时间:2016-03-15 02:49:15

标签: sql database oracle oracle11g

我正在尝试调整导致过多临时空间问题的查询。我注意到对于查询的特定部分:

Select group_id,  
item,
max(greatest(height,width,length)) length, 
max(greatest(least(height,length),least(height,width),least(width,length))) width, 
Max(least(length,width,height) height  
From items  
where group_id = 1  
group by group_id, item  

行,字节列从961M,27G到680M,43G。

PX SEND HASH    :TQ20044    680M    43G HASH
VIEW        680M    43G 
HASH GROUP BY       680M    19G
PX RECEIVE      961M    27G
PX SEND HASH    :TQ20042    961M    27G HASH
PX BLOCK ITERATOR       961M    27G 
TABLE ACCESS FULL   item_table  961M    27G

为什么选择最大值会导致Bytes列的大小几乎翻倍。有什么方法可以改变这个以至于不使用这么多吗?

---- ----更新
在查看表格后,item_table的主键为<group_id, item>,并且在group_id上也有一个分区列。删除不必要的group by和聚合函数会降低读取的字节数,但我仍然不明白为什么Bytes列在group_id = 1的初始过滤器之后上升而不是向下。

0 个答案:

没有答案