4

インデックスを除いて、すべてがまったく同じ構造を共有する250個ほどのテーブル(mysql)があります。テーブルの1つには、すべての正しい最新のインデックスがあり、そのインデックス構造を他の249個のテーブルに伝達したいと思います。

私が検索しているのは、コンテンツとインデックス構造を含むテーブルをコピーすることですが、これはやりたくないことです(各テーブルのデータは異なり、構造のみが同じです)。または、同じものを使用して新しいテーブルを作成します。私もやりたくない構造。

ALTER TABLEを使用して、正しいテーブルのテーブル構造を模倣し、それを他のテーブルに適用し、テーブルを最適化してから、phpスクリプトを介してこれらのコマンドを実行し、249個のテーブルすべてに適用するようにmysqlに指示する方法があることを期待しています。 、しかし、これを行うALTERTABLEコマンドがあるかどうかはわかりません。

任意のヒント?

4

5 に答える 5

4

「良い」テーブルでSHOW CREATE TABLE [table_name]. ALTER TABLE CREATE INDEXインデックス行をコピーし、それらをスクリプトで使用して、他のすべてのテーブルに対して同等の操作を実行します。

全体を完全に自動化したい場合は、SHOW INDEXESorSHOW CREATE TABLE呼び出しからインデックス定義を解析する必要があります。しかし、これは非常に奇妙な状況であるため、これを一度実行するだけでよいと思います。

于 2012-08-23T21:17:19.527 に答える
1

ジェレミーによる素晴らしい答え。あなたのmysqlが不平を言う場合に備えて、

CREATE TABLE users_n_indexed LIKE users_master;
INSERT users_n_indexed SELECT * FROM users_master;
DROP TABLE users_n;
RENAME TABLE users_n_indexed TO users_n;

TO を REMOVE TABLE ステートメントに追加する必要があります。

于 2017-03-22T06:28:26.607 に答える