2016-11-09 7 views
1

大きなアプリケーションで複数のテーブルの名前を変更しています。アプリケーションのいくつかの部分が更新に時間がかかるため、私は古いテーブル名を保持する必要があります。レガシーコードの表示を維持しながらMySQLのテーブル名を変更

私の考えは、このように、すべての新しいテーブルから選択するビューを作成することです:私は挿入と更新を行うことができるようになります。この記事(http://dev.mysql.com/doc/refman/5.7/en/view-updatability.html)によると

create view old_table_name as select a as x, b as y, c as z from new_table_name; 

と、このビューを削除します。

私の質問は、この新しいテーブルを使用するためにすべてのレガシーコードを移行できるようになるまで、一時的な解決策に過ぎないと考えています。 ジョイントや物事のパフォーマンスはまったく同じですか? この方法で複雑な更新や削除(結合を含む)を行うことはできますか?

この問題にアプローチするより良い方法はありますか?

ご協力いただきありがとうございます。

答えて

1

パフォーマンスは基本的に同じでなければなりません。

リテラルのみを返す集計関数/ group、/ having、distinct、limit、union、スカラーサブクエリ、およびビューを持たない単純なビューでは、MySQLはデフォルトでMERGEアルゴリズムを使用します。基本表の列を直接使用した場合

ドキュメントのView Algorithmsを参照してください。

Determining what algorithm MySQL view is usingも参考になる場合があります。

関連する問題