LINQ クエリとその実行計画のプロファイリングは、作成されることがあるクレイジーな SQL のため、特に重要です。
特定のクエリを追跡する必要があり、クエリ アナライザーで見つけるのに苦労することがよくあります。多くの場合、実行中のトランザクションが多いデータベース (運用サーバーの場合もあります) でこれを行うことが多いため、プロファイラーを開くだけでは不十分です。
また、DataContext を使用して不十分なトレースをしようとしていることがわかりました。これは、実際に自分で実行できる SQL が得られないためです。
これまでのところ、私の最善の戦略は、クエリに「乱数」を追加し、トレースでそれをフィルタリングすることです。
リンク:
where o.CompletedOrderID != "59872547981"
プロファイラー フィルター:
'TextData' like '%59872547981'
これは、いくつかの注意事項がありますが、正常に機能します。
- 条件を削除するか、クエリ プランにあまり影響を与えないものを選択するように注意する必要があります。はい、そのままにしておくと問題が発生することはわかっています。
- 私が知る限り、このアプローチを使用しても、追跡する必要があるすべての LINQ クエリに対して新しいトレースを開始する必要があります。既存のトレースの [ファイル] > [プロパティ] に移動すると、フィルター条件を変更できません。
アプリでクエリを実行し、それがプロファイラーにポップアップ表示されるのを見るのに勝るものはありません。他の誰かがこれよりも良い方法を思いついたか、少なくとも列のクエリよりも「危険な」トークンを検索することを提案したかっただけです。