MySQL の最適化: テキスト フィールドの NULL と ""
MySQL では、テーブル構造の決定がパフォーマンスとディスク領域の消費に大きな影響を与える可能性があります。そのような決定の 1 つは、テキスト フィールドのデフォルト値、つまり NULL または空の文字列 ("") です。
ディスク容量に関する考慮事項
MyISAM テーブルの場合、NULL は追加の値を追加します。 NULL 可能な列ごとに 1 ビットのオーバーヘッド。ただし、テキスト列には可変長のストレージがあるため、NULL と "" の違いは無視できます。
InnoDB テーブルでは、NULL はスペースを占有しませんが、空の文字列には文字列長に対して最小 2 バイトのオーバーヘッドがかかります。 。したがって、この場合、NULL のほうがスペース効率が高くなります。
パフォーマンスに関する考慮事項
NULL の検索は、「」を検索する必要がないため、わずかに高速です。文字列の長さをチェックします。この違いは、ほとんどのシナリオでは重要ではありません。
適用性と解釈
NULL または "" の選択は、「ここに値が設定されていない」というアプリケーションの解釈によって異なります。 "" が空のフィールドなどの有効な値を表す場合、NULL (値なし) と "" (実際の空の値) を区別するために、デフォルトの NULL を使用することをお勧めします。
下位互換性とデータ移行のシナリオの場合の場合、選択は既存のデータの解釈によって決まります。カラムが以前に存在しなかった場合には NULL が適切である可能性がありますが、SELECT * を使用し、NULL 値に敏感なクエリには "" が適している可能性があります。
一般的な推奨事項
一般原則として、NULL 可能な列のデフォルトの NULL は、「値が指定されていない」ことをより正確に表現するものであり、データの整合性を維持するために推奨されます。ただし、アプリケーションが空の文字列を有効な値として明示的に割り当てる場合、特に下位互換性のために、"" が有効な代替手段となる可能性があります。
以上がMySQL のテキスト フィールドの NULL または \'\': パフォーマンスとストレージの点ではどちらが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。