如何强制重新编译 Linq to SQL 查询的执行计划?

2024-01-16

我有一个动态创建的 LINQ to SQL 查询。有趣的是,当我在 SQL Management Studio 中运行它时,速度快如闪电。当我从 L2S 运行它时,一段时间后它变得非常慢。

这可能是由于查询计划/执行计划造成的。当我重新启动 SQL Server 时,L2S 查询也再次变得快如闪电。

现在,通过 T-SQL,您可以使用“WITH RECOMPILE”。但如何使用 L2S 做到这一点呢?


正如我在下面的线程中发现的,您可以使用DataContext.GetCommand(IQueryable)得到一个DbCommand对于您要执行的查询。您可以将“选项(重新编译)”添加到命令文本中,然后打开阅读器,然后使用[DataContext.Translate<T>]1 https://learn.microsoft.com/en-us/dotnet/api/system.data.linq.datacontext.translate将打开的阅读器转换为您想要的实体类型。

http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/def80609-eaf2-4631-8d3d-ad10fc9aedfa http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/def80609-eaf2-4631-8d3d-ad10fc9aedfa

例如,给定一个DataContext dataContext:

IQueryable<string> exampleItemsQuery = dataContext.Table.Where(…).Select(…); //etc

DbCommand command = dataContext.GetCommand(exampleItemsQuery);
command.CommandText += Environment.NewLine + "OPTION (RECOMPILE)";
if (dataContext.Connection.State != ConnectionState.Open)
   dataContext.Connection.Open();

IEnumerable<string> exampleItems = dataContext.Translate<string>(command.ExecuteReader(CommandBehavior.CloseConnection));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制重新编译 Linq to SQL 查询的执行计划? 的相关文章

  • 查询不可更新

    我正在尝试使用 BE SQL Server 2012 Express 中的记录更新本地 Access 2007 表 我的步骤在这里 SQL Server中存在带有4个参数的存储过程来获取所需的记录 Access VBA中有调用SP并进行临时
  • MS-sql 检索年龄最大的学生的成绩数据

    在此输入图像描述 https i stack imgur com mJ8aT png 在此输入图像描述 https i stack imgur com guYsU png 在此输入图像描述 https i stack imgur com 7
  • 尝试通过 knex 连接到 Mssql 服务器

    我正在尝试使用 knex 连接到远程数据库 但收到此错误 乏味已弃用默认值options encrypt将会改变自false to true 请通过false如果您想保留当前行为 请明确地表示 在node modules mssql lib
  • SQL - 用 varchar 替换 is null 整数

    我正在尝试用新的列替换列varchar如果 select 语句中存在空值 则为字符串 personid ISNULL personid no person 我不想更新它 只是在查询结果中将值显示为 无人 但我收到一条错误消息 将 varch
  • SQL Proc 从 varchar 到 int 的“转换失败”。为什么要转换?

    我的问题是 为什么它从 varchar 转换为 int 我不确定它想做什么 CREATE PROCEDURE myTestProcedure TransId VARCHAR 15 AS BEGIN DECLARE Result VARCHA
  • #DELETE 在 Access 中查看 SQL Server 表

    今天早上又出现了一个新问题 我的数据库驻留在 SQL Server 上 并使用 Access 作为前端 其中一个已经使用了至少 10 年的数据库今天突然停止工作 我发现这个问题影响了 2 个 可能更多 我没有检查所有 表 当我在访问中打开表
  • 在 Microsoft Sql Server 2008R2 及更高版本上隐藏登录数据库 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 请任何人协助隐藏 sql server 2008R2 或更高版本上的可用数据库 我有一个新的登录用户 已映射到特定数据库 使用特定登录用户登录时 我可
  • 出错时退出并回滚脚本中的所有内容

    我有一个 TSQL 脚本 它可以进行大量数据库结构调整 但在出现故障时让它继续执行并不真正安全 把事情说清楚 使用 MS SQL 2005 它不是一个存储过程 只是一个脚本文件 sql 我所拥有的按以下顺序排列 BEGIN TRANSACT
  • 为列名创建动态选择获取值 - 在 SQL Server 中

    请帮助我创建一个选择 SQL 语句 其中的结果列名称是从原始表中的列值获取的 表名是Device Part 用户可以输入很多DeviceCode其中有许多动态PartTypeName PartTypeName 值为PartInfo 这可能有
  • 如何返回以列名作为第一行的 T-SQL 查询

    我正在编写一个 SSIS 包来将数据从 SQL Server 2012 数据库输出到 CSV为客户归档 要求是第一行是列名称 下面是我为数据流任务中的源编写的查询 问题是 它总是将列名返回为最后一行 而不是第一行 为什么 我该如何实现这一目
  • SQL Server 将 SP_EXECUTESQL 识别为对象而不是过程名称

    我在用DBContext Database SqlQuery
  • .Net 将 NULL 值从变量值插入 SQL Server 数据库

    也有类似的问题 但答案不是我想要的 如果引用为 NULL 或尚未分配值 我想将 NULL 值插入 SQL Server 数据库 目前我正在测试 null 它看起来像 String testString null if testString
  • 将插入与 select 语句合并

    这对我有用 MERGE Table1 AS tgt USING SELECT TOP 1 FROM Table2 SELECT itmid FROM Table3 WHERE id id as a WHERE id id AS src ON
  • SQL Server 2005 - 达到表行大小限制

    有没有一种干净的方法可以在向表添加新列之前确定表的行大小 并且不超过 8060 字节的限制 例如 如果表行长度当前为 8055 字节 并且我想添加日期时间 8 字节 则这将结束 因为它将变为 8063 字节 不包括空映射 但是 如果我添加一
  • 防止从 SSMS 导出的文件中受影响的行条目

    我怎样才能防止这样的条目 123456 rows affected 在文件末尾导出的文本文件中 似乎没有找到选项 谢谢 你可以使用 SET NOCOUNT ON 不设置计数 https learn microsoft com en us s
  • SQL 删除自动命名约束

    我使用脚本在表上创建了一些约束 但未指定约束名称 结果 我最终受到了像这样的限制FK DOC OBGS kntr 54E63309例如 是否可以在不指定确切的约束名称的情况下删除该约束 例如 类似这样的东西 不起作用 ALTER TABLE
  • SQL查询多行变成单行

    有什么方法可以将通常返回具有相同值的多行的 SQL 查询更改为单行吗 例如 如果我现有的查询返回以下内容 ColA ColB 1 AA 1 BB 1 CC 2 AA 3 AA 我可以将查询更改为仅返回 3 行 并将 1 的第二个和第三个结果
  • LINQ:获取表详细信息

    我正在使用 LINQPad 我想了解表的架构详细信息 我知道我是用 SQL 来做的 SELECT column name FROM information schema columns WHERE table name table name
  • SQL 解析键值字符串

    我有一个像这样的逗号分隔字符串 key1 value1 key2 value2 key3 value3 key1 value1 1 key2 value2 1 key3 value3 1 我想将它解析成一个如下所示的表 Key1 Key2
  • 使用 SQL Server 作为具有多个客户端的数据库队列

    给定一个充当队列的表 如何最好地配置表 查询 以便多个客户端同时处理队列 例如 下表指示了工作人员必须处理的命令 当worker完成后 它会将处理后的值设置为true ID COMMAND PROCESSED 1 true 2 false

随机推荐

  • C 的 std::vector 替代品 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有替代方案C 中的 std 向量 我发现这个实现 http codingrecipes com implementation
  • (Flutter) 具有有限内容的无限滚动 `ListView.builder`

    1 问题 我该如何做我的ListView builder能够滚动到顶部和底部的空白区域吗 例如 我有一个自定义小部件列表 我希望用户能够通过滚动到列表中最上面的卡片 位于屏幕顶部 更接近他的拇指 而Flutter用空背景渲染顶部空间 2 到
  • 使用 MVC Web API 发布对象数组

    我有一个基本的后期操作 适用于单个对象RecordIem 我想做的是执行相同的操作 但通过使用相同格式发布一组请求来批量执行 例如 public HttpResponseMessage Post RecordItem request var
  • Python Multiprocessing.Pool 惰性迭代

    我想知道 python 的 Multiprocessing Pool 类与 map imap 和 map async 一起使用的方式 我的特殊问题是 我想映射一个创建内存密集型对象的迭代器 并且不希望所有这些对象同时生成到内存中 我想看看各
  • 用于查找时间跨度的最大平均值的 LINQ 查询

    我有一组数据有两个点 瓦特 和时间戳 每个数据点间隔 1 秒 所以它看起来像这样 0 01 100 0 02 110 0 03 133 0 04 280 该数据集长达几个小时 我想编写一个查询 在其中可以找到不同时间段 5 秒 1 分钟 5
  • 如何在 Android Retrofit 中忽略 JSON 元素

    我正在开发一个 Android 应用程序 它使用 Android Retrofit 发送 JSON 它将 POJO 类转换为 JSON 它工作正常 但我需要在发送 JSON 时忽略 POJO 类中的一个元素 有谁知道 Android Ret
  • 在 linux ubuntu 中使用 CPAN 时,我应该使用 sudo / 作为 root 或作为我的默认用户运行它

    我收到这样的错误 Running make install Prepending blib arch and blib lib of 17 build dirs to PERL5LIB for install ERROR Can t cre
  • 将 Markdown 转换为 HTML 的正则表达式

    如何编写正则表达式将 mark 转换为 HTML 例如 您可以输入以下内容 This would be italicized text and this would be bold text 然后需要将其转换为 This would be
  • TomEE 8 服务器仅限于 Netbeans 15 中的 Java EE7 Web 应用程序

    所以我从这里安装了最新的 Apache TomEE 8 服务器 https tomee apache org download html https tomee apache org download html TomEE 服务器运行良好
  • 如何使用 OpenCV 和 Python 使用遮罩(或透明度)在图像中查找模板?

    假设我们正在寻找这个模板 我们模板的角是透明的 因此背景会有所不同 如下所示 假设我们可以在模板中使用以下掩码 找到它会很容易 我尝试过的 我努力了matchTemplate但它不支持蒙版 据我所知 并且在模板中使用 alpha 通道 透明
  • Angular:从外部访问 ng-content 嵌套组件方法

    我有两个共享组件 我希望父组件调用其子组件中的方法 共享组件 1 父组件 Component selector parent template div div div div
  • 在 ffmpeg 中将 2 个音频文件与一个视频合并

    我正在尝试合并 2 个音频文件 wav带视频文件 mp4 产生输出video mp4使用 ffmpeg 进行扩展Windows CMD 这是我尝试过的 ffmpeg i V MP4 i A1 WAV i A2 WAV map 0 v map
  • 在 C# 中检测多个同时按键

    我希望通过检测某些无法键入的组合键 转义序列 的按键来模拟 C 中的串行通信的超级终端功能 例如 Ctrl C Ctrl Z 等 我知道这些键有其 ASCII等价物 并且可以按原样传输 但我在检测多个按键时遇到问题 我提供一些代码作为参考
  • 顶部导航已隐藏

    当我滚动到页面底部并看到页脚时 我不希望隐藏导航顶部 下面是滚动之前的状态 Below is a screenshot when scrolling down to the page 这是代码
  • 从 int 中获取单个字节

    我得到了一个 int 数 例如 5630 十进制 二进制数是 00000000 00000000 00010101 11111110 我想获得十进制的第二个字节 00010101 我怎样才能得到它 您可以使用BitConverter Get
  • 有哪些类型的测试?

    我总是独自工作 我的测试方法通常是经常编译 并确保我所做的更改工作良好 如果不工作则修复它们 然而 我开始觉得这还不够 我对标准类型的测试感到好奇 有人可以告诉我基本测试 每个测试的简单示例以及为什么使用它 测试什么吗 Thanks 不同的
  • 使用故事板时,IBoutlets 很快为零

    在我的一个ViewControllers 当我到达viewWillAppear 我所有的IBOutlets are nil 我尝试查看 matt的解决方案 但它适用于笔尖而不是故事板 这只是当我在 iOS 7 设备上运行应用程序时出现的问题
  • 重新打包 .jar 文件

    我需要将 JRE7 库中的一些 jar 添加到我的 Android 项目中 但例如rt jar与以下内容相冲突android jar来自 Adroid 2 2 SDK 所以我收到此错误 不明智或错误地使用核心类 java 或 javax 当
  • 适用于 Linux 和 PHP 5.4 的 MSSQL Server 本机 ODBC 驱动程序

    我在 Linux Debian 6 x64 上有 Apache 2 2 16 和 PHP 5 4 3 要安装适用于 Linux 的 MSSQL Server 的本机 ODBC 驱动程序 我使用以下说明 http www codesynthe
  • 如何强制重新编译 Linq to SQL 查询的执行计划?

    我有一个动态创建的 LINQ to SQL 查询 有趣的是 当我在 SQL Management Studio 中运行它时 速度快如闪电 当我从 L2S 运行它时 一段时间后它变得非常慢 这可能是由于查询计划 执行计划造成的 当我重新启动