2011-12-08 14 views
4

私はシナリオがあり、私はデータベースヒットを減らすためのベストプラクティスを知りたいと思っています。シナリオは、自分のアプリケーションに辞書表があり、私のシステムは多言語であるため、すべての単語/キーワードを翻訳に使用しています。 キーワードはページの全面に配置されており、1ページに10〜20語にすることができます。英語版のウェブサイトを表示していないユーザーは、データベースから翻訳をフェッチします。linqのSQLへのデータベースヒットを減らす方法

My application in Asp.Net MVC 2 with C#とLINQ2SQL。

答えて

8

キャッシングは、データベースクエリを減らすのに適しています。あなたが使用できるキャッシュの2つのレベルがあります。

  • は(データベースクエリ結果の一例用)のキャッシュオブジェクト
  • は、全体のコントローラのアクションやパーシャルのキャッシュHTML出力
+0

キャッシングは良い方法であることができDEMO期間..

を持っていますdbクエリを減らすが、私は各単語のヒットを減らしたい。 1つのページに20ワードがある場合、20ヒットではなく1ヒットですべてを取得したい –

8

翻訳は通常ありません頻繁に変更され、データ量には限界があります。ウェブアプリケーションの起動時にすべて翻訳文字列を読み込み、グローバルにアクセス可能な辞書に入れます。翻訳された文字列が必要なときはいつでも、それらを辞書で見てください。

+0

+1 - 利用可能な情報に基づいて提案するものとほとんど同じではない –

2

linqは遅延ロードです。つまり、クエリによって返されたプロパティにアクセスしない限り、クエリがデータベースにヒットしないため、本当に必要になる前にプロパティにアクセスしないようにしてください。

また、linqクエリを1つに組み合わせて、ループを見て、クエリを順を追って調べるのに良い方法がないかどうかを確認することもできます。

データベースアクセスを完全に削除し、データベースではなくxmlの変換ファイルを使用することもできます。

2

キャッシングや遅延読み込みなどを行う前に、間違っていることを理解することをお勧めします。

LinqToSql Profilerを入力します。はい、商用製品ですが、それだけの価値があります。また、これは..あなたにクエリを実行がらくたを表示しているクエリなど、N + 1をやっている....

enter image description here

+0

Sqlサーバープロファイラまたは[ express] Anjlab SQLプロファイラは同じで自由です。あなただけがデバッグ中にそれを行う必要があります – Pleun

関連する問題