[11/15開催: PostgreSQL Conference Japan 2019 参加受付中] 
他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

F.43. tsm_system_time

tsm_system_timeモジュールはSYSTEM_TIMEというテーブルサンプリングメソッドを提供します。 これはSELECTコマンドのTABLESAMPLE句で利用できます。

このテーブルサンプリングメソッドはテーブルを読み込みのに消費する最大ミリ秒を指定する浮動小数点の引数を1つ取ります。 これにより、サンプルのサイズを予測するのが難しくなる代わりに、問い合わせに要する時間に関する直接的な制御が得られます。 結果のサンプルには、指定した時間内に読み込めただけの数の行が含まれます。 ただし、テーブル全体を先に読み終わった時は除きます。

組み込みのSYSTEMサンプリングメソッドと同様、SYSTEM_TIMEはブロックレベルのサンプリングを行うため、サンプルは完全にはランダムではなく、特にごく少数の行がSELECTされたときはクラスタリングの影響を受けます。

SYSTEM_TIMEREPEATABLE句をサポートしません。

F.43.1. 例

以下にSYSTEM_TIMEを使ってテーブルのサンプルをSELECTする例を示します。 まず、拡張をインストールします。

CREATE EXTENSION tsm_system_time;

これで、例えば以下のようにSELECTコマンドを使うことができます。

SELECT * FROM my_table TABLESAMPLE SYSTEM_TIME(1000);

このコマンドは1秒(1000ミリ秒)の間にmy_tableから読み込めるだけのサンプルを返します。 もちろん、テーブル全体が1秒いないに読み込めるときは、すべての行が返されます。