3

現在、MySQL データベースに結合する必要がある 2 つの大きなテーブル (テーブル A はテーブル B と 1 対多の関係があります) があり、パフォーマンス上の理由から、この結合を削除したいと考えています。

テーブル B の行を取得し、それらをテーブル A の列 (または複数の列) で表す賢明な方法はありますか? 複合データ型の配列の使用を検討してきましたが、このデータにインデックスを付けたり、効率的にクエリを実行したりする良い方法はないようです。

現在 MySQL を使用していますが、Postgres への移行を検討しています。ただし、この問題を解決できるデータベースを検討します。

4

2 に答える 2

1

中間ビューの使用を検討してください。プロセスが高速化されます。

[A]-1---n-[B]の場合、Aへの外部キーをBに設定することもでき、AxBデカルト積は不要になります

于 2012-06-19T12:59:55.700 に答える
0

オプションは、アプリケーション層で関連データを取得することです。つまり、最初にテーブル 1 から行をフェッチし、次に 2 番目のクエリで 2 番目のテーブルから関連する行をフェッチします。両方のコードのパフォーマンスを評価してみてください。つまり、1 つのクエリと 2 つのクエリがあります。

それでも、コメントセクションで述べたように。結合列にインデックスを追加してみてください。where 条件を使用してデータを制限してみてください。そして最も重要なことは、出力として必要な行数である結果セットを制限しようとすることです。limit を使用すると、追加の行を取得するために必要な時間が短縮されます。

于 2012-06-19T13:14:58.127 に答える