比方說,我有以下查詢:Redshift能夠優化重複聚合表達式嗎?
SELECT sum(a), sum(b), sum(a) - sum(b)
FROM salelines
希望它應該只需要做sum(a)
和sum(b)
曾經因爲第三欄可以重用這些聚集。這裏是EXPLAIN
:
XN HashAggregate (cost=35.21..41.90 rows=535 width=22)
-> XN Seq Scan on salelines (cost=0.00..15.65 rows=1565 width=22)
然而,有趣的是,如果我改變列是這樣的形式,它不應該是能夠優化出:
SELECT sum(a), sum(b), sum(a - b)
FROM salelines
首先,我得到一個不同的平均成本,這將表明查詢規劃實際上治療的陳述不同的地方:
XN HashAggregate (cost=31.30..36.65 rows=535 width=22)
-> XN Seq Scan on salelines (cost=0.00..15.65 rows=1565 width=22)
但是,什麼是最有趣的是這個查詢計劃表明,這樣做實際上應該更快。我知道cost
不直接涉及查詢的性能。
我的問題是:
是紅移能夠優化出來的表情,或者它實際上會更快地讓紅移做一個第三集合與它的極端柱總體性能呢?