NOT NULL
の設定 それ自体はパフォーマンスに影響を与えません。チェックのための数サイクル-無関係。
ただし、ダミー値の代わりに実際にNULLを使用することで、パフォーマンスを向上させることができます。データ型に応じて、多くのディスクスペースとRAMを節約できます 、それによって..すべてをスピードアップします。
nullビットマップは、行にNULL値がある場合にのみ割り当てられます。 。 すべての1ビットです 行の列(NULLかどうか)。最大8列のテーブルの場合、タプルヘッダーと行データの間にスペアバイトを使用して、ヌルビットマップは事実上完全に解放されます。その後、スペースはMAXALIGN
の倍数で割り当てられます (通常は8バイト、64列をカバーします)。違いはパディングによって失われます。したがって、各行の最初のNULL値の全額(低額!)を支払うことになります。 。追加のNULL値は、スペースを節約することしかできません。
null以外の値の最小ストレージ要件は、1バイト(boolean
)です。 、"char"
、...)または通常多く さらに、(場合によっては)位置合わせのためのパディング。 データ型
を確認してください または、システムテーブルpg_type
で厄介な詳細を確認してください 。
nullストレージの詳細: