3

ここに2つのテーブルがあります。

ITEMS
ID| DETAILS| .....| OWNER

USERS:
ID| NAME|....

どこITEMS.OWNER = USERS.ID

私はそれぞれの所有者の名前でアイテムをリストしています。このために、両方のテーブルで結合を使用するか、すべてのアイテムを選択してそれらをループし、SQLクエリを作成してそのitmes所有者のタプルを取得することができます。それは次のようなものです:

JOINを使用した1つのSQLと1x20の単一テーブルSQLクエリ

スピードの観点から、どちらがより良いアプローチでしょうか?ありがとう

4

4 に答える 4

6

もちろん、JOINより速くなります。

クエリ20を実行すると、次のようになります。

  • 20それらの時間を解析する
  • インデックスを作成20すると、上のインデックス範囲の開始点を見つけようとしますitems
  • レコードセットを返し20ます(それぞれに独自のメタデータがあります)。
于 2011-01-21T12:21:55.157 に答える
3

すべてのクエリにはオーバーヘッドがあります。1つのクエリで何かを実行できる場合は、(ほとんど)常に1つのクエリで実行することをお勧めします。そして、ほとんどのデータベースエンジンはあなたより賢いです。クエリを何らかの方法で分割した方がよい場合でも、データベースは自分自身を見つけます。

オーバーヘッドの例:100個のクエリを実行すると、アプリケーションとWebサーバー間のトラフィックが大幅に増加します。

一般に、パフォーマンスについて本当に知りたい場合は、さまざまなアプローチのベンチマークを行い、関心のあるパラメーターを測定し、ベンチマークの結果に基づいて決定を下します。

幸運を!

于 2011-01-21T12:28:13.910 に答える
2

結合の実行ははるかに高速であり、より良い方法になります

于 2011-01-21T12:23:14.623 に答える
0

親テーブルのレコードごとに子テーブルで別のクエリを実行するよりも、結合する方がはるかに高速です。

SQLでパフォーマンスデータを有効にして、結果を自分で確認することもできます。

http://wraithnath.blogspot.com/2011/01/getting-performance-data-from-sql.html

N

于 2011-01-21T12:21:49.733 に答える