-1

データベースにadsという名前のテーブルがあります。このテーブルには、各広告に関するデータが含まれています。そのデータをテーブルから取得して広告を表示したいと思います。

今、私には2つの選択肢があります。

  1. テーブルからすべてのデータを取得して配列に格納してから、この配列を使用して各広告をその位置に表示しますby using loops
  2. または、テーブルに直接アクセスして各広告データを取得して表示します。この方法では、データベースへのクエリがより多く消費されることに注意してください。

どちらが最善の方法であり、スクリプトを遅くしませんか?

4

4 に答える 4

0

次の部分を強調したいと思います。

テーブルからすべてのデータを取得し、配列に格納します

すべての行を配列に格納する必要はありません。結果セットを表すイテレータを取得して、それを使用することもできます。

使用するデータベースオブジェクトによっては、これは多くの場合、メモリをあまり消費しないバリアントです。また、ここでは1つのクエリのみを実行することをお勧めします。

イテレータは、実際には最新のデータベース結果オブジェクトで一般的です。

さらに、これはビューコードを実際のデータベースの相互作用から切り離すのに役立ち、SQLクエリの実行を延期することもできます。

于 2012-10-01T13:12:18.813 に答える
0

クエリの量を最小限に抑える必要がありますが、データベースから実際に取得するデータの量も最小限に抑えるようにする必要があります。

つまり、実際に表示している広告のみを取得します。columnPK IN (1, 2, 3, 4)たとえば、これらの広告を取得するために使用できます。

注目すべき例外:アプリケーションが「広告」を中心としていて、ほとんどすべての場所でそれらが必要な場合、および/またはそれらが多くのメモリを消費しない場合、および/または追加が多すぎない場合は、パフォーマンスの面で優れている可能性があります広告のすべて(またはサブセット)を配列に保存します。

とりわけ:Measure, measure, measure

どのアルゴリズムが最も効率的であるかを予測することは非常に困難です。多くの場合、「より効率的であるため」何かを実装して、後で最適化が実際にアプリケーションの速度を低下させていることを確認します。

于 2012-10-01T13:12:47.380 に答える
0

ほとんどの場合、#1の方が優れています。

1つのクエリでデータ(最小の必要なセット)を選択できる場合は、データベースサーバーへのラウンドトリップが少なくなるためです。

(メモリから)配列またはオブジェクトプロパティへのアクセスは、通常、DBクエリよりも高速です。fetchingまた、データを準備し、出力と混同しないことを検討することもできviewます。

2番目のオプション「オンデマンドで選択」は、「遅延読み込み」が必要な場合に意味があります。これは、ビューポートなどのクライアントプロパティを認識できる、または認識したいためです。

于 2012-10-01T13:13:34.040 に答える
0

可能な限り最小限のデータベースクエリでPHPスクリプトを実行するように常に心がける必要があります。データベースにクエリを実行するときは常に、要求を(通常は)ネットワーク経由でデータベースに送信する必要があり、要求が返されるまでスクリプトはアイドル状態になります。

ただし、データベースに必要以上のデータを要求しないように注意する必要があります。したがって、テーブル全体を要求してからPHPレイヤーの個々の行を選択するのではなく、WHERE句で可能な限りフィルタリングするようにしてください。

テーブルの外観と表示する広告の選択方法を教えていただければ、SQLクエリの作成をお手伝いできます。

于 2012-10-01T13:13:44.540 に答える