2017-11-03 18 views
0

この2つのクエリの間に違いはありますか?もっと速くなるものがあれば?Postgresql:DEFAULT NULLと変更テーブルのNULLとの違い

ALTER TABLE mytable ADD COLUMN newcolumn VARCHAR(64) DEFAULT NULL; 
ALTER TABLE mytable ADD COLUMN newcolumn VARCHAR(64) NULL; 

どのようにしてボンネットの下で動作しますか?数百万行のテーブルがある場合、クエリのいずれかがNULL値を新しい列に設定するためにすべての行を書き換えますか?

+0

可能な複製https://stackoverflow.com/questions/25968054/null-vs- default-null-vs-null-default-null-in-mysql-column-creation – Steven

+0

これはmysqlに関するものです。 – oxana

答えて

0

最初のステートメントは、既定値がNULLの列を追加します。つまり、インサートは、挿入に明示的に含まれていない場合はnullを設定します。

第2ステートメントは、列の値がNULLである可能性のある「制約」のある列を、NOT NULL制約の反対側に追加します。列がNULL値を含むことが許され

+0

ありがとうございますが、大きなテーブルの得点はどうですか? – oxana

+0

測定可能な違いはありませんが、デフォルトの動作をさまざまな方法で示しています。私が知っている限り、それらは同じ定義に帰着するでしょう。いくつかのテストデータベースを作成し、 'pg_dump'を使ってスキーマをダンプして、それらが異なって保存されているかどうか確認してください。私は彼らが同じものを出力すると思います。 – wmorrell

0

https://www.postgresql.org/docs/current/static/sql-createtable.html

NULL。これはデフォルトの です。

default_exprさらに

DEFAULT ...

列にはデフォルトがない場合、デフォルト値はnullです。

この2つのステートメントは、列を2つのデフォルト作成オプションにリセットします。

デフォルトの列ではない列は、デフォルトの列より長くなります。両方がデフォルトではない場合、カタログを更新し、2つ、1つまたは修飾子を変更するのと同じ時間がかかります...

関連する問題