SQL
ユーザーが入力したクエリをデータベース
で検索するWebアプリケーションを構築しています。シンプルな検索エンジン。
数千を超える行がたくさんあることを提案しましょう。通話を効率的にしたい。
私の呼び出しは1つの*SQL
クエリで可能であることを知っています。Linq-To-Sql
この種の最適化が行われるかどうか知りたいのですが。
私はそれがLazy
そのクエリに使用することを知っています。データベースに十分なデータがないため、現在ベンチマークを実行できません。
foreach(var word in words)
{
var niqquh = number == 666 ? "" : Languages[number];
var S = db.Uploads.Where(w => number == 666 ? true : (w.Language == niqquh));
if(S.Count() > 20)
S = S.Take(20);
S = S.OrderBy(u => (u.Tags.Contains(word) ? 15 : 0) + (u.Name.Contains(word) ? 10 : 0) + (u.Description.Contains(word) ? 5 : 0));
listOfList.Add(S.ToList());
}
666
ここにあるように、私は「どんな言語でも大丈夫」と言うために使用される
「マジックナンバー」を持っています。
次に、上位20個の要素のみを取得したいので、を呼び出しCount()
てからTake
。
次に、必要に応じて結果を並べ替えます。
重要なのは、式はで評価されると思うということです。したがって、レベルで上位20行のみを含むように最適化することはできませんが、クライアント(ASP.NET)レベルで評価されます。したがって、私は基本的にデータベース全体をクライアントにダウンロードしますが、これはひどいことです。最適化されているかどうか、そうでない場合は、プレーンな文字列ステートメントに戻らなければならない場合でも、どうすれば効率的な方法でそれを行うことができますか?
*それぞれのクエリlazy
Count
SQL Query
SQL
word