検索

ホームページ  >  に質問  >  本文

mysql - データベース設計(スキーム設計)、NULLは出来るだけ避けるべき?

実際の現象

学んだこと:

  1. NULL セマンティクスは不明瞭です

  2. クエリの最適化は簡単ではありません

  3. それが null 値を表す場合は、(論理的に) 他の代替手段が存在する可能性があります。

    • VARCHAR(100) はデフォルトでは NULL ではありません '';

    • INT NOT NULL デフォルト 0;

予想される現象

  1. スキームを設計する際の NULL に対する考え方を理解したいと思っています (NOT NULL DEFAULT XXX を試してみるべきだという記事を読んだ記憶があります)

仅有的幸福仅有的幸福2750日前722

全員に返信(2)返信します

  • 巴扎黑

    巴扎黑2017-05-18 10:56:25

    はい、NULL 可能な列はできる限り避け、特にインデックス付き列の場合は、可能な限りデフォルト値を明示的に設定する必要があります。 mysql では、値にインデックスが付けられている場合、null はスペースを占有します。そのインデックスは無効です。

    返事
    0
  • 某草草

    某草草2017-05-18 10:56:25

    はい、フィールドが空ではないと判断する場合は、mysql で is not NULL を使用する必要もあります。NULL 値は実際には B ツリー インデックスに格納されないため、インデックス付きフィールドを空にすることができます。 NULL、インデックス 効率が大幅に低下します。

    返事
    0
  • キャンセル返事