Teradataは単一テーブルから全件返すときもスプールを使う


Teradataで3000万件ぐらいのテーブルをただ全件引いてみると、

	select * from t  /* 3000万件 */

しばらくだんまりになった後で、猛然と結果が返ってくる。
このだんまりの時間に何をしているのかexplainで調べてみると、

3) We do an all-AMPs RETRIEVE step from TST.t by way of an all-rows
scan with no residual conditions into Spool 1 (group_amps), which
is built locally on the AMPs.

何と全件スプールに書き写している。
ここでテーブルを丸ごと転記する意味は何なのだろう?


TeradataはI/Oがあまりにも速いので(数100万件のテーブルから数件を選択するクエリなら、インデックス使ってるのかテーブルスキャンしてるのか、人間には区別が付かない)、この特性のために困ったことは一度もないのだが、スプールを使う理由と、もしあれば回避策が知りたい。