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

MySQL列の値を0または''ではなくNULLに設定することのディスクスペースへの影響

    いいえ、NULLを使用しても、空のVARCHARよりも少ないスペースを使用することはありません。 またはINT 分野。実際、もっとかかる場合があります スペース。理由は次のとおりです:

    VARCHAR サイズ+値として保存されます。サイズに使用されるバイト数は、VARCHARの最大ストレージによって異なります。 。 VARCHAR(255) 1バイト、VARCHAR(65536)が必要です 2バイトなどが必要です。

    そのため、VARCHAR(255) 空の文字列を格納しても、列は1バイトを占めます。次の表は、行ごとに最低1バイトかかります(さらに、ストレージエンジンに応じて他の可能なオーバーヘッドもあります)。

    CREATE TABLE sample (
      a VARCHAR(255) NOT NULL
    );
    

    NULLを保存するには 値の場合、MySQLは各行にビットマスクを使用します。 1バイトあたり最大8つのNULL可能列を格納できます。したがって、次のようなテーブルがある場合:

    CREATE TABLE sample (
      a VARCHAR(255) NULL
    );
    

    行ごとに最低2バイトかかります。 NULLの保存 ビットを設定するだけで、使用するかどうかに関係なく、すでに予約されています。 VARCHARのバイト 列がNULLに設定されている場合でも、のサイズは各行で引き続き使用されます 。



    1. TomcatJDBCプールに十分なアイドル接続がありません

    2. oracle sqlの結果をWindowsのファイルに出力する方法は?

    3. AUTONOMOUS_TRANSACTION

    4. MySQL/MariaDBテーブルを最適化する方法