clusterコマンドでシーケンシャルスキャンが劇的に速くなるのはどうして?

vacuum analyze や reindex をしても大して速くならないシーケンシャルスキャンが、cluster コマンドを発行してみると劇的に速くなることがある。
が、どうして速くなるのか、その仕組みが分からない。


clusterするインデックスは何でもいいようだ。例えば主キーのインデックスについて

    cluster <主キーのインデックス名> on <テーブル名>

を発行し、

    select * from <テーブル名>

すると、2桁ぐらい(例えば10秒 -> 0.5秒)速くなることがある*1
実行計画が変わっているわけではない。全件読んでるだけだから当然だが、間違いなく "Seq Scan" のままだ。

大部分のレコードを返すようなクエリがあって、どうしてもシーケンシャルスキャンが使われるテーブルは、定期的に cluster しておくと効果があるのではないかと思うが、どうして速くなるのか、どなたかご存知ありませんか。

*1:OLTPでたくさん更新がかかったテーブルであることが必要条件