sql >> データベース >  >> RDS >> PostgreSQL

postgresqlの列にNOTNULLを設定すると、パフォーマンスが向上しますか?

    NOT NULLの設定 それ自体はパフォーマンスに影響を与えません。チェックのための数サイクル-無関係。

    ただし、ダミー値の代わりに実際にNULLを使用することで、パフォーマンスを向上させることができます。データ型に応じて、多くのディスクスペースとRAMを節約できます 、それによって..すべてをスピードアップします。

    nullビットマップは、にNULL値がある場合にのみ割り当てられます。 。 すべての1ビットです 行の列(NULLかどうか)。最大8列のテーブルの場合、タプルヘッダーと行データの間にスペアバイトを使用して、ヌルビットマップは事実上完全に解放されます。その後、スペースはMAXALIGNの倍数で割り当てられます (通常は8バイト、64列をカバーします)。違いはパディングによって失われます。したがって、各行の最初のNULL値の全額(低額!)を支払うことになります。 。追加のNULL値は、スペースを節約することしかできません。

    null以外の値の最小ストレージ要件は、1バイト(boolean)です。 、"char" 、...)または通常多く さらに、(場合によっては)位置合わせのためのパディング。 データ型 を確認してください または、システムテーブルpg_typeで厄介な詳細を確認してください 。

    nullストレージの詳細:



    1. フォローアップ Q:Oracle テーブルの行を比較し、一致する行を更新する

    2. 月数を取得しようとしています

    3. 動的フィールド名でトリガー

    4. メールアドレスを主キーとして使用しますか?