7

インデックス付きのビューがあり、それを適切に実行するには、noexpandヒントを指定する必要があります。残念ながら、NOLOCKヒントからLinq to SQLで生成されたT-SQLクエリを変更することに関して見られるように、これらのヒントを直接利用する簡単な方法はないようです。

私の考えでは、属性を使用するか、宣言的にdbmlを使用して、このようなものをカスタマイズできるようにすることは理にかなっています。また、Linq toSQLはSQLServerを対象としてのみ機能するように見えるため、これらの高度な機能(存在する場合)も活用できることは理にかなっています。実装に関係なく、私はこの問題を解決するための創造的な方法に興味があります。

4

2 に答える 2

12

動作しているように見えるが、NOEXPANDヒントを使用するSQLビューごとに2番目のビューを作成する必要がある回避策を見つけました。2番目のビューでは、元のビューからすべてのフィールドを選択し、NOEXPANDヒントを追加します。NOEXPANDヒントを使用する必要があるLinqtoSQLクエリは、元のビューをラップするビューのみをターゲットにできるようになりました。

詳細については、このMSDNの投稿を参照してください。

依存ビューを作成するときに考慮すべき1つの欠点は、作成スクリプトを適切な依存順序で適用する必要があることです。

誰かより良い選択肢がありますか?この必要なオプティマイザヒントの使用をサポートするためだけに、追加のSQLビューを作成する必要はありません。

于 2010-06-28T19:56:49.433 に答える
2

私は完全に同意しますが、そのような方法があるとは思いません。EF4では、ExecuteStoreCommandSQLを直接実行できるを使用できます。パフォーマンスが許容できない場合は、それが唯一の選択肢かもしれません。

==編集==

メソッドを介してLINQtoSQLでこれを行うこともできますExecuteQuery

http://msdn.microsoft.com/en-us/library/bb399403.aspx

于 2010-06-28T19:57:58.493 に答える