データベースに10kレコードのテーブルがあるとしましょう。これらの10kレコードを実際に使用する必要はもうありませんが、データベースに保持する必要があります。そのテーブルは、新しいデータを格納するために使用されます。したがって、テーブルにすでに存在する10Kレコードの上にさらに多くのレコードが追加されることになります。「古い」10Kレコードとは対照的に、新しく挿入されたデータを処理する必要があります。今、私は必要なデータを取得するためにこれを行っています:
List<Stuff> l = (from x in db.Table
where x.id > id
select x).ToList();
私の質問は、LINQ(またはSQL一般)の句が内部でどのように機能するかということです。where
真になるまでテーブル全体が検索され(x.id > id)
ますか?テーブルが10kレコードから20Kに増加するとします。特定のポイントから調べ始めるだけでよいことがわかっている場合、20kレコード全体を調べるのは少しばかげています。
LINQ toエンティティを使用しているときに、これでパフォーマンスの問題が発生しました(劇的ではありませんが、それによって動揺するほど悪いです)。たった2万レコード。LINQクエリの代わりにストアドプロシージャを使用するようにアドバイスされましたが、これによってパフォーマンスが向上するかどうかわかりませんか?
フィードバックをいただければ幸いです。