MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

15.12.4 オンライン DDL を使用した DDL ステートメントの簡略化

オンライン DDL が導入される前は、多くの DDL 操作を 1 つの ALTER TABLE ステートメントに結合することが一般的な習慣でした。 各 ALTER TABLE ステートメントにはテーブルのコピーと再構築が含まれていたため、テーブルに対するすべての変更を 1 回の再構築操作で実行できたことから、同じテーブルへのいくつかの変更を一度に行う方が効率的でした。 マイナス面としては、DDL 操作に関連する SQL コードが保守しにくく、別のスクリプトでの再利用も難しい点がありました。 特定の変更が毎回異なっていたとすると、少し異なるシナリオごとに、新しい複雑な ALTER TABLE の構築が必要になる可能性があります。

オンラインで実行できる DDL 操作の場合は、効率を犠牲にすることなく、スクリプトおよびメンテナンスを容易にするために個々の ALTER TABLE ステートメントに分割できます。 たとえば、次のような複雑なステートメントを取り上げ、

ALTER TABLE t1 ADD INDEX i1(c1), ADD UNIQUE INDEX i2(c2),
  CHANGE c4_old_name c4_new_name INTEGER UNSIGNED;

それを独立してテストおよび実行できる、次のようなより簡単な部分に分解することができます。

ALTER TABLE t1 ADD INDEX i1(c1);
ALTER TABLE t1 ADD UNIQUE INDEX i2(c2);
ALTER TABLE t1 CHANGE c4_old_name c4_new_name INTEGER UNSIGNED NOT NULL;

複数の部分からなる ALTER TABLE ステートメントは、次の目的に引き続き使用できます。