回答編集履歴
2
言葉足らずな部分を修正
answer
CHANGED
@@ -8,9 +8,9 @@
|
|
8
8
|
データベースにアクセスするレイテンシを排除することもできますしね。
|
9
9
|
|
10
10
|
キャッシュした場合は実現したい検索処理によってどうしたら高速になるのかは変わってきます。
|
11
|
-
一番簡単な方法であればWhereメソッドを必要に応じて繋げていき、最も遅い時間を取ってくるのは`LastOrDefault`を、最も早い時間は`FirstOrDefault`を使えばいいです。
|
11
|
+
一番簡単な方法であればコレクションをソート済みで用意しておき、Whereメソッドを必要に応じて繋げていき、最も遅い時間を取ってくるのは`LastOrDefault`を、最も早い時間は`FirstOrDefault`を使えばいいです。
|
12
12
|
|
13
|
-
|
13
|
+
ソートの必要がないように最初にコレクションを用意しておくのはここでもやはり重要です。
|
14
14
|
まずは時間順でソートしておきましょう。これはSQLならデータを取ってくる時にしておけばいいです。
|
15
15
|
コレクションをOrderByしたら時間がかかっても、SQLでのソートはインデックスがあれば一瞬です。
|
16
16
|
```SQL
|
1
言葉足らずな部分を修正
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
次からは質問する時に自信がなければ変にやりたいことを自分で要約しすぎないようにしましょう。
|
3
3
|
そもそも1から10000がミクロも関係ない話題ですねこれは…。
|
4
4
|
|
5
|
-
もしもコレクションのソースがデータベースで、毎回問い合わせ
|
5
|
+
もしもコレクションのソースがデータベースで、キャッシュしておけずに毎回SQL問い合わせが発生するようなケース(Webアプリの場合とか)だったらそもそもLinq使うのやめて全部SQL文で対処しましょう。SQL側にも1件だけデータを取ってくるための構文が大体用意されてます。(SQL Serverだったら TOP 1とかね。)
|
6
6
|
|
7
7
|
コレクションが固定のマスタでデータをキャッシュしておけるなら、Linqを使えばいいでしょう。
|
8
8
|
データベースにアクセスするレイテンシを排除することもできますしね。
|