2

ループでデータベース クエリを実行すると、パフォーマンスに問題があることは明らかです。しかし、クエリが準備済みステートメントとして使用されている場合、違いはありますか?

テーブルを結合して結果を取得するか、ループで準備済みステートメントを使用するのはどちらが望ましいですか?

4

2 に答える 2

2

結果セットをループして追加の結果を取得するよりも、ほとんどの場合、を使用joinすることをお勧めします。

リレーショナル データベース管理システムは、関連する結果を結合するために構築されており、非常に効率的に実行されます...さらに、これにより、データベースへの多くのラウンド トリップを節約できます。いいえ。

于 2013-02-05T17:05:41.873 に答える
1

プリペアドステートメントのオーバーヘッドは、おそらく入力のエスケープではなく、データベースへの接続、再接続、または最終的なSQLステートメントの送信の動作になります。コードとリレーショナルデータベース間のそのインターフェイスは、何よりもプロセスのスローポイントになる可能性があります。

ただし、私の場合は、通常、最初から最も単純で最も維持しやすいものを選び、パフォーマンスが実際に遅いことがわかった場合にのみパフォーマンスを心配します。ただし、パフォーマンスの最適化が必要であることが判明した場合に実装を変更できるように、データ取得機能を別の関数またはメソッドで記述します。

その時点で、SQLの最適化を開始し、複数のプリペアドステートメントの代わりに結合または結合を使用できます。

于 2013-02-05T17:14:19.030 に答える