0

私には2つのテーブルがQuestionありOption、1対多の関係があります。2つのテーブルから結果をフェッチした後、結果の配列は次のようになります。

Question = array(//質問テーブルの結果

   Option = array(
         //result from the Option Table
     ) 

);

データベースから10個の質問を取得したい場合、2つの方法でこれを実行できると仮定します(私は思う)

  1. 2つのテーブルを結合し、データベースとそれを使用したプロセスからPHPループと制御からデータをフェッチします(私はこれを好みました)

  2. をフェッチQuestionしてから10個のクエリを実行しOptionます。(1のように処理する必要がないので簡単です)

PHPで結果を処理するのが良いのか、SQLクエリを使用するのが良いのか知りたいです。

4

3 に答える 3

2

一般に、1つの結合クエリを作成する方がはるかに優れています。

  • データベースに対して行うリクエストは、11ではなく1つだけです(質問用に1つ、オプション用に10つ)。データベースクエリは非常にコストのかかる操作です。クエリを実行するたびに、データベースに対してネットワーク要求が行われます。
  • データベースエンジンは、ネットワークのラウンドトリップ時間の違いを無視しても、クエリを最適化してはるかに高速に実行できる可能性があります。
  • ループ内のクエリを使用するPHPコードよりも、1つの結合クエリを読み、理解し、変更する方がはるかに簡単です。
于 2012-11-17T09:35:15.967 に答える
1

joinはるかに高速でサーバーの負荷を節約できるので、参加してください(オプション1)

于 2012-11-17T09:32:48.183 に答える
0

オフコース参加の方が優れています。これにより、UIで必要なものだけを取得し、負荷のバランスをとることができます。

2番目のオプションでは、DBからすべてのレコードをフェッチし、必要に応じてそれらを処理して、多すぎるようにします。

必要な情報のみをフェッチするための基本を覚えておいてください。

于 2012-11-17T09:34:01.297 に答える