質問

そこで、私は 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 オプティマイザがボールをドロップする可能性がある場所です。変更を加える前に、オフラインで試してみることをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top