如何使用 LINQ to SQL/ADO.NET 获取执行计划

本文关键字:NET 获取 执行 计划 ADO 何使用 LINQ to SQL | 更新日期: 2023-09-27 17:56:28

是否可以

以编程方式获取 LINQ to SQL 或 ADO.NET 查询的执行计划以显示在调试信息中? 如果是这样,如何?

如何使用 LINQ to SQL/ADO.NET 获取执行计划

当然,您需要两样东西。

DbConnectionDbCommandDbDataReader的自定义实现。您可以使用它来拦截发送到数据库的所有 SQL。你基本上设置了它,所以你有一个记录所有运行的SQL的层。(我们计划在未来几个月内在这一领域开源一些东西,敬请期待)

一种显示理解数据的方法,恰好是开源的:https://data.stackexchange.com/stackoverflow/s/345/how-unsung-am-i(请参阅包含执行计划选项)

<小时 />

另一种方法是在事后通过查看 proc cache.sys.dm_exec_query_stats 包含可以扩展的缓存计划句柄来执行诊断。