0

複雑なクエリとは、少なくとも 2 つの結合を使用する必要があるクエリを意味します。データベースのスキーマ/モデルを構築したとしましょう。、 、、およびusers.user_id = 5を求めています。結合 SQL ステートメントは記述しません。それらはすべて、データベースのスキーマ/モデルによってバックグラウンドで結合されます。MySQLで可能ですか?logins.lastlogingroups.groupnamehistory.user_weight

4

2 に答える 2

2

ビューのアイデアが気に入らない場合-これは理想的です-次のようにして、ブランコが言及したオラクルのマテリアライズドビューをいつでも模倣できます。

、、およびを結合する各テーブルでINSERTDELETEおよびトリガーを作成します。(例)と呼ばれる新しい5番目のテーブルを更新しますUPDATEusersloginsgroupshistorylgh

したがってlgh、上記のクエリにこの新しいテーブルを使用します。実際のビューよりもスキャンされる行数が減る可能性がありますが、元の 4 つのテーブルのいずれかでデータが変更されるたびにオーバーヘッドが発生します。この新しい lgh テーブルを使用する頻度と他の 4 つのテーブルを更新する頻度に応じて、パフォーマンスが向上する場合があります。

免責事項:

  • 私はこの回避策を容認しません。これはあなたの質問に対する別の提案です。
  • 代わりに、元の 4 つのテーブルに、おそらくその結合クエリで使用するすべての列に対しても、さらにインデックスを追加することを検討する必要があります。
  • これは「キャッシング」に似ているかもしれませんが、そうではありません。
于 2012-08-30T11:53:29.857 に答える
1

はい、可能ですviews

http://dev.mysql.com/doc/refman/5.5/en/views.html

于 2012-08-30T07:31:06.440 に答える