PostgresのTABLESAMPLEは行ではなくアドレスを選ぶ
Tablesample Picks Rows

TABLESAMPLEはページ番号や行ポインタをハッシュして一部だけを読むため、巨大テーブルでも高速に概算できる。ただしSYSTEMはページ単位で選ぶので、時系列順に並んだデータではサンプルが短い区間に固まり、平均や最小値が大きく偏る。REPEATABLEでシードを固定しても、UPDATEやVACUUM FULLで行のアドレスが変われば結果は保証されない。主キーのハッシュで絞る方法なら安定する。
TABLESAMPLEについて奇妙に見えることはすべて、ひとつの事実に由来する。それは行を選ぶのではなく、アドレスを選ぶということだ。