テーブルに対して SHOW INDEX を実行したところ、次のような出力が得られました:
SHOW INDEX
この情報に基づいて、テーブルにインデックスを追加するための ALTER ステートメントを作成するにはどうすればよいですか?
ALTER
上記のビルの良い回答をさらに詳しく説明しました。出力オプションが拡張され、ADD PRIMARY KEY、ADD UNIQUE INDEX、または ADD INDEX
select concat('ALTER TABLE ', table_schema, '.', table_name, ' ADD ', if(index_name = 'PRIMARY', 'PRIMARY KEY ', if(non_unique, 'INDEX ', 'UNIQUE INDEX ')), if (index_name = 'PRIMARY','', Index_name), ' (', group_concat('', column_name, '' order by seq_in_index), ');') 「alter table ステートメント」として information_schema.statistics より ここで、テーブルスキーマ = '' table_schema、table_name、index_name、non_unique ごとにグループ化します table_schema、table_name、非一意の asc
SHOW INDEX 情報が不十分です。これを試してみてください:
select concat('ALTER TABLE `', table_schema, ``.`', table_name, '' ADD ', if(non_unique, '', 'UNIQUE '), 'INDEX `', インデックス名, '' (', group_concat('`', column_name, '`' order by seq_in_index), ');') as _ddl information_schema.statistics より ここで (テーブルスキーマ, テーブル名) = (?, ?) table_schema、table_name、index_name、non_unique ごとにグループ化;
プレースホルダー ?、? を残したスキーマ名とテーブル名を入力する必要があります。
これは単なる入門編です。プレフィックスインデックス、式インデックス、アノテーションなどの一部のオプションが考慮されていないことはわかっています。読者の演習として残しておきます。
また、インデックスごとに個別の alter table ステートメントも生成されます。すべてのインデックスを追加する変更テーブルを作成する場合は、サブクエリを使用して各インデックスの列リストを生成し、group_concat() でそれらを外側のクエリで結合します。
上記のビルの良い回答をさらに詳しく説明しました。出力オプションが拡張され、ADD PRIMARY KEY、ADD UNIQUE INDEX、または ADD INDEX
が含まれるようになりました。 で並べ替えますSHOW INDEX 情報が不十分です。これを試してみてください:
プレースホルダー ?、? を残したスキーマ名とテーブル名を入力する必要があります。
これは単なる入門編です。プレフィックスインデックス、式インデックス、アノテーションなどの一部のオプションが考慮されていないことはわかっています。読者の演習として残しておきます。
また、インデックスごとに個別の alter table ステートメントも生成されます。すべてのインデックスを追加する変更テーブルを作成する場合は、サブクエリを使用して各インデックスの列リストを生成し、group_concat() でそれらを外側のクエリで結合します。