teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

言葉足らずな部分を修正

2016/12/16 07:57

投稿

haru666
haru666

スコア1593

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

言葉足らずな部分を修正

2016/12/16 07:57

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  次からは質問する時に自信がなければ変にやりたいことを自分で要約しすぎないようにしましょう。
3
3
  そもそも1から10000がミクロも関係ない話題ですねこれは…。
4
4
 
5
- もしもコレクションのソースがデータベースで、毎回問い合わせ毎に発生するようなケース(Webアプリの場合とか)だったらそもそもLinq使うのやめて全部SQL文で対処しましょう。SQL側にも1件だけデータを取ってくるための構文が大体用意されてます。(SQL Serverだったら TOP 1とかね。)
5
+ もしもコレクションのソースがデータベースで、キャッシュしておけずに毎回SQL問い合わせ発生するようなケース(Webアプリの場合とか)だったらそもそもLinq使うのやめて全部SQL文で対処しましょう。SQL側にも1件だけデータを取ってくるための構文が大体用意されてます。(SQL Serverだったら TOP 1とかね。)
6
6
 
7
7
  コレクションが固定のマスタでデータをキャッシュしておけるなら、Linqを使えばいいでしょう。
8
8
  データベースにアクセスするレイテンシを排除することもできますしね。