1

次のURLに応答して、クエリの結果を提供する必要があります。

http://foo.com/search?from=20&perpage=10

パフォーマンスの観点からのベストプラクティスは何ですか?

  1. WHERE行>Nおよび行<=Kで毎回クエリを実行します

  2. クエリを1回実行し、すべての結果を一定期間保持します

  3. 他に何ができるでしょうか?

4

1 に答える 1

2

クエリで生成されるデータ量が非常に少ない場合は、結果をキャッシュすることを検討できます。しかし、これについて考えてください:

  • 高性能のページネーションは簡単ではありません。これは、データベース側でより優れたパフォーマンスで実行できます(Microsoft SQL Server 2012を使用している場合は、このための独自の拡張機能があります)。
  • ページ付けはユーザーによって行われ、ユーザーはデータを読み取って[次のページ]ボタンをクリックするのに時間がかかります。新しいクエリのパフォーマンスへの影響は大きくなく、データベースは、私たちが実行できるよりも優れた独自のキャッシュを処理します。
  • 大量のデータをキャッシュすることは、新しいクエリよりも役に立たず、メモリを消費し、効率が低くなります。

次に、私の答えは毎回クエリを実行します。あなたのデータベースはあなたよりもそれをうまく処理し、あなたのデータに合わせてスケーリングします(そうでなければ、システムに1000000レコードがあると、500レコードで機能する可能性のあるものが壊れます)。

要約すると、データベースエンジンは、データをキャッシュするのに私たちよりも効率的であり、拡張性も高くなります。(通常)優れたインデックスは、パフォーマンスを向上させるために必要なすべてです。

于 2012-07-18T10:37:31.970 に答える