2017-08-23 6 views
1

エンティティにアクセスすると、Entity Frameworkは本質的には"SELECT *"を実行しているようです。これは、ORMが応答をオブジェクトとして扱うことを許可しているので、意味があります。すべてのプロパティは応答でアクセス可能でなければなりません。Entity Frameworkによるインデックス付け

読んで重いシナリオでは、クラスタ化されていないインデックスを作成するときに完全なカバレッジインデックスを使用する傾向がありますか?それ以外の場合は、常にがクラスタード・インデックスの追加ルックアップとなります。

完全に最適化しようとしているNCインデックスについては、すべてのNCインデックスについて完全なカバレッジを提案するわけではありません。

+0

インデックスにすべての列を含めると、正しく理解すれば、そのインデックスはテーブルと同じくらい大きく非効率になります。 PKルックアップを確認してください。 – CodeCaster

+0

あなたは「大きなもの」については正しくありますが、非効率性に関してはちょっと離れているかもしれません。索引を作成するときは、索引の葉に含めるもの(オプション)に加えて、索引のキーとなるものを指定します。私が指しているのは、インデックス内のすべてのプロパティを含むため、インデックスのサイズが大きくなります。しかし、効率に関しては、最適化ルックアップが可能であるが、ヒープのテーブルスキャンは非効率的である。 – Jmoney38

答えて

0

私はこの主題に関するすべての議論で、結論はEFであり、他のフレームワークはキーで動作するように最適化されているため、唯一または少数のデータセットで動作することは優れています。

別の問題は、初期ロードを使用すると、不要なデータがロードされる可能性がありますが、すべてのプロパティにアクセスするのは簡単ですが、遅延ロードを使用すると、すべての必要な特性が使用時に負荷となることを保証する。これらの戦略は、あなたがあなたのインデックスを計画するという事柄に影響を与える可能性があります。

グリッドを埋めるなど、多くの情報を扱う必要がある場合は、必要なデータだけを読み込むため、SQLコマンドを実行する方が効率的です。

関連する問題