ALTER TABLE1,000 万行のテーブルがあり、別の列 (a) を追加しようとしていますVARCHAR(80)。
データ モデリングの観点からは、その列はNOT NULL- である必要がありますが、ステートメントの実行にかかる時間は考慮事項であり、NULLそれが保証されている場合は列を処理するようにクライアント コードを変更できます。
NULL追加しようとしている列の能力は、どちらの方法でも列を追加するのにかかる時間に大きな影響を与えるべきですか?
詳しくは
私がこれを行っているコンテキストは、South によって生成された移行を伴う Django アプリです - 3 つの個別の列を追加し、新しく追加された列の 1 つにインデックスを追加します。South で生成された SQL を見ると、この操作 (3 つの列とインデックスの追加) が 15 のALTER TABLEステートメントに分散されています。
InnoDB は実際にはディスク上のファイルに null 許容フィールドのフィールドを作成する必要はなくNULL、ヘッダーのビットフィールドを変更するだけであることを示唆する参考文献を見てきました。これは操作の速度に影響しALTER TABLEますか?