2016-07-04 5 views
1

私は、百万のレコードを含む人々に関する情報を持つデータベースを持つプログラムを持っています。タスクのLINQクエリまたはSQLクエリ。より効率的なものは何ですか?

一つの都市別のグループ それらを、その後、誕生日で結果をフィルタリングし、最終的に 与えられた番号で各都市の人口を比較することでした。

私は、SQLクエリですべてのものを書き始めたが、その後、私は疑問に思い始めた、それは、サーバーがビジー状態にすることが、多分それはアプリケーション自体にいくつかの計算を行う方が良いでしょう。

私はすべてのルール/勧告

  • がある場合、計算を行うためにサーバーを使用する際に知っていただきたいと思いますか?
  • アプリケーションでLINQのようなツールを使用するタイミングは?このような要件については
+0

実用的なシナリオのほとんどのロードで最高の作品の組み合わせは、多くのを要するかもしれないですメモリ。あなたのアプリにすべてを読み込むこともあなたのサーバーを占有します。 –

+0

@juergend:しかし、データベース内で何らかの処理を行い、残りのプログラムで何らかの処理を行うことも一般的です。例えば、データベース側でデータをフィルタリングし、コード内で複雑な変換を行うなどです。 –

+1

この特殊なケースはあまり複雑ではありません。私は最初にSQLでそれを書こうとし、それがどのように実行され、どのようなクエリプランのように見えるだろう。 –

答えて

0

、決まったルールや戦略がありません、それは、アプリケーション/ビジネス要件によって駆動され、役立つかもしれない提案のカップル:

  • 通常、SQLクエリは多くをかき回すに良い仕事をしていませんフィルタリング/グループ化/ソート後のより小さい結果セットを提供するために、しかし、それは最適化するために、テーブルのデザイン、インデックス作成する
    が必要です。アプリケーションのパフォーマンスを殺すもののネットワークはデータが一定のサイズを超えている場合は特に、大きなボトルネックになる可能性があるため、データサイズの増加などのSQLは下に、ホストされたデータベースから、ネットワーク経由で

  • 転送するデータを行うことができる

  • Linq2Objectsを使用したメモリ処理では、フィルタを適用してデータをソートしてさらに処理する必要がある反復呼び出しで非常に高速に処理できます。

  • UIがリッチクライアントの場合、メモリとLinqを使用して作業を続ける、それはメモリのデータ構造の一部であることができますUIがWebの場合dを使用してデータをキャッシュする

  • 複数の型のメモリデータに対しては、sqlと同じ操作を行うために、linqと一緒にExpressionツリーを使用するカスタムコードが必要です。固定型

私は自分のWebアプリケーションのいずれかで同様のデザインを持って、通常、それはすべてのアプリに

関連する問題