上記のクエリ(linq)は、100万レコードすべてが必要で、64ビットメモリアドレス指定OSに十分なメモリがある場合に適しています。
クエリの順序は、基になるコマンドが表示された場合、次のように変換されます。
Select <_varname> from MyDataTable order by <_varname>
これは、データベースIDEまたはコマンドラインで実行した場合と同じくらい優れています。
パフォーマンスに関する簡単な回答を提供します
- 可能であればwhere句を挿入します(インデックスが付けられた列を使用)
- ユーザーがインデックス付けされた列(_varname)を選択できることを確認してください。DBがインデックス付けされていない列で100万件のレコードを並べ替えようとしていると想像してください。これは明らかに遅いですが、linqがbadpressを受け取る危険があります。
- MyDataTableの初期化が(可能であれば)価値のあるレコードで正しく行われていることを確認します(これもwhere句に基づいています)
- 基になるクエリのプロファイルを作成し、
- 可能であれば、storedprocsを作成します(議論の余地があります)。Storedprocsを含むエンティティモデルを作成することもできます
今日は高速かもしれませんが、テーブルスペースが大きくなり、データが順序付けられていない(インデックスが付けられていない)と、処理が遅くなります(適切なlinq式があったとしても)
お役に立てれば
そうは言っても、データベースが適切にインデックス付けされていない場合、つまり