1

MySQL テーブルのメンテナンスを行っています。これは、冗長な列をいくつか削除し、新しい列を追加することを意味します。

ドロップする列のいくつかは、追加する列と同じタイプです。これを利用して、既存の列の一部を再利用した場合、手順は速くなりますか?

私の理論的根拠は、列名の変更は単純なテーブル メタデータの変更であるべきだということです。一方、列の削除と追加は、ファイルの最後にスペースを見つける (データを断片化する) か、すべての行を正しい列で再構築して同じになるようにすることを意味します。ディスクに置きます。

問題のエンジンは MyISAM であり、これがどのように処理されるかについて私は一概に言えませんので、以前に同じ状況にあったことがある方からの意見をお聞きしたいと思います!

4

4 に答える 4

1

パフォーマンスに深刻な問題がない限り、名前を変更するアプローチは採用しません。これは、データがすべて汚れているためです。

また、テーブルを削除すると、インデックスが再構築されます。これは、たまに行うことをお勧めします...

マーティン

于 2009-10-05T16:06:26.467 に答える
0

わからない場合、Myisam テーブルでは、すべての ALTER TABLE 操作がテーブル全体のコピーを実行するため、サーバーがテーブルをコピーする必要がある間、テーブルはロックされます。

于 2009-10-06T07:13:27.223 に答える
0

私は同じロジックを使用しましたが、テーブルの書き換えを必要としないはずの変更 (つまり、テーブルの名前変更) を行っても、MySQL のバグにより、テーブルの書き換えが必要な変更であると認識されてしまいました。

扱っているフィールドが日付、日時、またはタイムスタンプのフィールドである場合、これに見舞われる可能性があります。つまり、完全な書き換えを行う必要があると想定して、そのように計画する必要があります。

于 2009-10-06T07:17:10.023 に答える
0

私は列を削除します。どちらの方法でも断片化が発生します。これは、定期的な保守計画で処理する必要があります。多数の変更操作の後、それらを高速化できます。

于 2009-10-05T16:57:21.793 に答える