MySQL はエイリアスの目的でパフォーマンスを表示します
-
29-09-2020 - |
質問
そこで、私は Rails プロジェクトに取り組んでおり、他のアプリケーションで使用されているレガシーデータベースがあるため、その構造を変更することはできません。問題は、テーブル名と列名が Rails の規則に従っていないことです。これに対する一般的な解決策は、列を適切にエイリアスするだけの MySQL ビューを作成することです。
これらは非常に単純なビューです。
SELECT old_column_1 AS new_column_1, old_column_2 AS new_column_2 FROM table_name;
一部のテーブルは 2,200 万行 (2GiB) など、非常に大きくなります。すべてのテーブルは、 MYISAM
. 。それも一つあります MEMORY
200 万行 (~350MiB) のテーブル
重要な問題は、そのようなビューでどのくらいのオーバーヘッドが発生するのか、またそれが何らかの影響を与えるのかということです。 ROW LOCK
または TABLE LOCK
その間 INSERT
または JOIN
は?
解決
YMMV。ビュー 時々 同じ最適化を実行できないため、実行よりも実行が遅くなります。 SELECT
直接。あなたのケースは単純なので、おそらく目立ったオーバーヘッドは発生しません。
INSERTs
を通して VIEW
限界がある。当たらないようですね。マニュアルを読んでください。
JOINs
オプティマイザがボールをドロップする可能性がある場所です。変更を加える前に、オフラインで試してみることをお勧めします。
所属していません dba.stackexchange