-4

私はこのような2つのテーブルを持っています:

表 A:

article_id | attribute_id
1          | 5
2          | 6

表 B:

attribute_id | attribute_name
5            | foo
6            | bar

結果を取得したい:

article_id | attribute_id | attribute_name
1          | 5            | foo

私には2つの解決策があります:解決策A:次のように内部結合を使用するか:

SELECT TableA.article_id, TableB.*
FROM TableA
INNER JOIN TableB ON TableA.attribute_id = TableB.attribute_id
WHERE TableA.article_id = 1

またはソリューション B、私の Java プログラムで:

  • テーブル A で最初にクエリを実行します。
  • 新しい接続を開き、最初のクエリの「article_id」を使用してテーブル B をクエリします。

パフォーマンスに関して、どちらのソリューションが優れているかを知りたいです。注意してください、テーブル A と B は大量のヒットを受け取ります。また、注意してください、私は mysql と tomcat を使用しています。

4

3 に答える 3

4

これはほとんどの場合、「実際のデータで試して、どちらがうまく機能するかを確認してください」ということです。

一般に、結合がより効率的 (はるかに) になることを期待しています。しかし、繰り返しますが、データとセットアップで試してみる必要あります

于 2013-02-16T10:28:49.497 に答える
1

新しい接続にはかなりのオーバーヘッドがあるため、結合は非常に高速です。

于 2013-02-16T10:28:18.597 に答える
0

短い答え: 結合。

長い回答: パフォーマンスに非常に関心がある場合は、結合に基づいてインデックス付きビューを作成し、それを選択することをお勧めします。

于 2013-02-16T10:31:10.137 に答える