| 整数 |
|---|
| -32768〜32767の2バイト整数。 | まれ。容量を節約する必要がある場合のみ。 |
| 4バイト整数。およそ±20億。 | デフォルトの整数カラム。 |
| 8バイト整数。およそ±900京。 | 非常に大きいカウンタや外部ID。 |
| 自動採番の4バイト整数。 | 旧来の自動連番キー。PG 10以降はGENERATED AS IDENTITYが推奨の後継。 |
| serialの2バイト版と8バイト版。 | smallintまたはbigintカラムに合わせた自動採番。 |
| テーブルが自動生成する整数(GENERATED ALWAYS AS IDENTITY)。 | モダンなserial。SQL標準で、手動INSERTに対してもより安全。 |
| 10進数と浮動小数点 |
|---|
| 任意精度の正確な10進数。 | 金額や、丸め誤差が許されないあらゆる用途。 |
| 4バイトの単精度浮動小数点数。 | 精度が決定的でない近似的な科学値。 |
| 8バイトの倍精度浮動小数点数。 | 地理空間、統計、MLの特徴量。 |
| 固定ロケールの通貨額。 | まれ。通貨コードをアプリ側で扱うnumericの方が移植性が高い。 |
| テキスト |
|---|
| 固定長テキスト。スペースで埋められる。 | 幅が決まったコード。ほとんど不要。 |
| 任意の上限つき可変長テキスト。 | ユーザー名やメールアドレスのような上限あり文字列。 |
| 長さ制限のない可変長テキスト。 | 汎用の文字列カラム。varcharに対して性能ペナルティはない。 |
| 時間 |
|---|
| 時刻を含まないカレンダー上の日付。 | 誕生日や期日。 |
| 時刻。タイムゾーン付きまたはなし。 | 毎日のアラームや営業時間。 |
| タイムゾーンなしの日付と時刻。 | レガシースキーマ。新しい開発では避ける。 |
| UTCで保存され、クライアントのタイムゾーンで表示される日付と時刻。 | 実世界のあらゆる瞬間のデフォルト。timestampよりこちらを推奨。 |
| 2日や3時間のような時間の長さ。 | 期間や日付計算。 |
| 真偽値・UUID・バイト |
|---|
| 真または偽。 | フラグやトグル。 |
| 128ビットの汎用一意識別子。 | 公開しても安全な非連番ID(アプリ側またはgen_random_uuidで生成)。 |
| 生のバイナリバイト列。 | Blob、画像、不透明なペイロード。大きなファイルはオブジェクトストレージへ。 |
| 固定長または可変長のビット列。 | パックされたフラグやプロトコルフィールド。単一のオン/オフ値なら依然としてboolean。 |
| JSONと半構造化データ |
|---|
| バイナリ形式に解析され、インデックス可能になったJSON。 | 柔軟またはネストされたデータ。推奨されるJSONカラム(GINインデックスをサポート)。 |
| 元のテキストのまま保持されるJSON。 | まれ。キー順序や正確な空白を保持する必要がある場合のみ。 |
| XMLテキスト。 | XMLが必須のレガシー連携。 |
| JSONデータ内を移動するためのコンパイル済みパス式。 | jsonb_path_queryやSQL/JSON演算子でjsonb内をフィルタリング。 |
| ネットワークと検索 |
|---|
| IPv4またはIPv6のホストアドレス。 | クライアントやサーバーのIPを保存。 |
| 10.0.0.0/24のようなIPネットワークブロック。 | ファイアウォールルールやサブネット範囲。 |
| 6バイトまたは8バイト(EUI-64)のMACアドレス。 | デバイスやネットワークインターフェースの識別子。 |
| 全文検索用に前処理されたテキスト。 | 専用検索エンジンに頼る前の、PostgreSQL組み込み検索。 |
| AND、OR、前置演算子で組み合わせた検索語。 | 全文検索のクエリ側。@@でtsvectorと照合する。 |
| 先行書き込みログ(WAL)の位置、ログシーケンス番号。 | レプリケーション遅延やバックアップの監視。 |
| 複合型と高度な型 |
|---|
| 任意の基本型の配列。例: integer[]。 | 単純な値のリスト。要素が独自のカラムを必要とするなら子テーブルを使う。 |
| 自分で定義した固定リストから1つの値。 | 選択肢が安定しているステータスフィールド。 |
| 複数フィールドからなるカスタム行型。 | テーブル間で共有される繰り返しフィールド群。 |
| 2つの境界の間の連続範囲。 | 重なり演算子とともに、スケジュール、価格帯、バージョン区間に。 |
| 自分で定義した制約で包んだ基本型。 | 空でないメールのような再利用可能なルール。使うすべてのカラムで強制される。 |
| 型付き値からなる無名の行。 | PL/pgSQL関数の戻り値やクエリの中間結果。 |
| 組み込みの2次元幾何値。 | 単純な平面幾何。実世界の位置にはPostGISが必要。 |
| 符号なし4バイトのシステムオブジェクト識別子。 | システムカタログの結合用。アプリケーションのカラムには使わない。 |
| 63文字の内部識別子文字列。 | カタログ照会用。ユーザーに見せるデータには通常のtextを。 |
| 拡張型 |
|---|
| 1つの値に格納されたキー/値の文字列ペア(拡張)。 | フラットなマップ。今日ではjsonbの方が優れている。 |
| news.tech.aiのような階層ラベルパス(拡張)。 | 祖先・子孫クエリを伴うツリー構造。 |
| 大文字小文字を区別せず比較するテキスト(拡張)。 | lower()インデックスなしで、メールのような大文字小文字を無視した一意性。 |
| PostGIS拡張が提供する地理・幾何オブジェクト。 | 距離、包含、空間インデックスのクエリ。 |
| UUID値を生成する拡張関数群。 | レガシーな生成方法。PG 13以降はgen_random_uuid()が組み込み。 |