SQL Server 使用参数导致结果缓慢

2024-04-23

我有一个选择一些数据的查询,我在其中传递了一些参数:

DECLARE @FromAccDocNo     INT = 1,
        @ToAccDocNo       INT = 999999999,
        @FromDate         CHAR(10) = '1900/01/01',
        @ToDate           CHAR(10) = '2999/12/30',
        @L1Code           INT = 129

SELECT ad.AccDocNo,
       ad.AccDocDate,
       add1.Row,
       add1.RowComment,
       add1.Debit,
       add1.Credit
FROM   AccDoc ad
       INNER JOIN AccDocDetail add1
            ON  add1.AccDocNo = ad.AccDocNo
       INNER JOIN Topic t
            ON  t.TopicCode = add1.TopicCode
WHERE  t.L1Code = @L1Code -- here is the difference
       AND add1.AccDocNo BETWEEN @FromAccDocNo AND @ToAccDocNo
       AND ad.EffectiveDate BETWEEN @FromDate AND @ToDate
ORDER BY
       ad.AccDocNo

首先,我将值 129 显式写为@L1Code(需要 0.010 秒)

在第二形式中我通过了@L1Code进入查询(需要 2.500 秒)

谁能解释发生了什么?


请阅读规范参考:应用程序慢,SSMS 快? http://www.sommarskog.se/query-plan-mysteries.html(具体来说这个bit http://www.sommarskog.se/query-plan-mysteries.html#varparamreplace)

修复的一种方法是添加OPTION (RECOMPILE)在查询的末尾。

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

SQL Server 使用参数导致结果缓慢 的相关文章

  • 如何将 LEFT JOIN 限制为 SQL Server 中的第一个结果?

    我有一些 SQL 几乎可以做我想做的事情 我正在使用三个表 Users UserPhoneNumbers 和 UserPhoneNumberTypes 我正在尝试获取用户列表及其电话号码以供导出 数据库本身很旧并且存在一些完整性问题 我的问
  • 列的 SQL MAX(包括其主键)

    Short 从下面的 sql select 中 我获取了 cart id 和该购物车中最高价值商品的值 SELECT CartItems cart id MAX ItemValues value FROM CartItems INNER J
  • 使用 Spring Boot 的 Flyway Core 给出错误 'delayedFlywayInitializer' 和 'entityManagerFactory' 之间的循环依赖关系

    我想在 SQL Server 数据库上导入一些数据 我使用的是 Spring Boot 2 3 4 我还使用 Hibernate 来生成表 我在pom中添加了flyway核心
  • 别名 .\SQLEXPRESS 为 (LocalDB)\MSSQLLocalDB

    I have SQLEXPRESS已安装 但代码假设我有一个名为 LocalDB MSSQLLocalDB 如何创建别名以便不必安装SQLLocalDb 启动 Sql Server 配置管理器 使用以下参数为 64 位 SQL Native
  • 如何使用 RODBC 将数据帧保存到数据库生成的主键表

    我想使用 R 脚本将数据框输入到数据库中的现有表中 并且希望数据库中的表具有顺序主键 我的问题是 RODBC 似乎不允许主键约束 这是创建我想要的表的 SQL CREATE TABLE dbo results ID INT IDENTITY
  • 如何:使用 SQL Server 2008 创建自动更新修改日期的触发器

    很高兴知道如何创建一个自动更新的触发器modifiedDate我的 SQL Server 表中的列 Table 时间输入 Id PK UserId FK Description Time GenDate ModDate 触发代码 TR Ti
  • 如何在 switch 语句中将向量作为参数传递

    我对问题的谷歌搜索没有返回有用的结果和文档 switch没有告诉我如何做 所以我希望我能在这里得到答案 假设我有一个向量 cases lt c one two three 我想使用 switch 语句并将这些元素作为 switch 语句的参
  • 有没有办法将配置参数传递给 Outlook 插件

    我有一个 JS Outlook 插件 我希望能够将其部署到多个站点 但我希望将相同的代码部署到每个站点并在外部处理配置数据 如果可能 像 process env 适用于 Node js 服务器应用程序 之类的东西适用于客户端应用程序 我发现
  • 性能计数器的性能影响是什么

    当考虑使用性能计数器作为我公司的基于 NET 的站点时 我想知道使用它们的开销有多大 我是否想让我的网站不断更新其计数器 或者我最好只在测量时更新 设置性能计数器的开销通常不够高 无需担心 设置共享内存区域和一些 NET 对象 以及 CLR
  • 哪个更快:堆栈分配或堆分配

    这个问题听起来可能相当简单 但这是我与另一位合作的开发人员进行的辩论 我小心翼翼地在可能的地方进行堆栈分配 而不是堆分配它们 他一边跟我说话 一边看着我 并评论说没有必要 因为他们的表现是一样的 我总是有这样的印象 堆栈的增长是恒定的时间
  • SQL 查询在多用户环境中返回错误值

    一段时间以来 我们在我们的一个客户站点上发现了奇怪的数据完整性问题 经过大量调查后 我们现在已将其隔离为数据库调用 如果两个用户同时调用同一个存储过程 有时一个用户会得到另一个用户的结果 我们设置了一个测试来验证这一点 并且我们有一个循环
  • 获取下一个ID而不插入行

    在 SQL SQL Server 中是否可以在插入行之前从表中的标识列检索下一个 ID 整数 而无需实际插入行 如果删除了最近的行 则这不一定是最高 ID 加 1 我问这个问题是因为我们偶尔需要用新行更新实时数据库 行的 ID 在我们的代码
  • SQL Server 到 er 模型

    是否有程序可以将 SQL Server 数据库图表转换为 er 模型 或者从 SQL Server 服务器创建数据库的 er 模型 在 SQL Server 中 Management Studio 中的每个数据库都有 数据库图 功能 您可以
  • SQL 查询Where Column = '' 返回表情符号字符

    好的 我有一个包含三列的表 Id Key Value 我想删除所有行Value是空的 因此 我在删除之前编写了要选择的查询 Select from Imaging ImageTag where Value 到目前为止一切都很标准 现在这是奇
  • 仅当所有记录都匹配时 SQL 连接

    我有3张桌子 CP carthead idOrder CP cartrows idOrder idCartRow CP shipping idCartRow idShipping dateShipped 每个 idOrder 可以有多个 i
  • R:使用带有 .Call 和 C/C++ 包装器的 Fortran 子例程而不是 .Fortran 的优点?

    我有一个 R 包 它使用大量 Fortran 子例程来进行递归线性代数计算的嵌套循环 很大程度上依赖于 BLAS 和 LAPACK 例程 作为 Fortran 的接口 我使用 Fortran功能 我刚刚读过乔纳森卡拉汉的博客文章 http
  • 有效地生成所有排列

    我需要尽快生成所有排列 https en wikipedia org wiki Permutation整数的0 1 2 n 1并得到结果作为NumPy https numpy org 形状数组 factorial n n 或者迭代此类数组的
  • 时间复杂度和运行时间有什么区别?

    时间复杂度和运行时间有什么区别 它们是一样的吗 运行时间是指程序运行所需的时间 时间复杂度是对输入大小趋于无穷大时运行时间渐进行为的描述 您可以说运行时间 是 O n 2 或其他什么 因为这是描述复杂性类和大 O 表示法的惯用方式 事实上
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择

随机推荐

  • iPhone 5 屏幕高度错误

    我在 3 5 英寸屏幕上开发了一个应用程序 现在我为 4 英寸屏幕制作了一个新的 Storyboard 我喜欢按照以下方式在 appdelegate 上的 Storyboard 之间切换 我记录了屏幕高度 它给了我 480 00000 检查
  • 来自不同框架的扩展方法的名称冲突

    作为测试 我创建了两个框架 两个框架都包含此扩展 public extension UIDevice var extraInfo UIDeviceExtraInfo return UIDeviceExtraInfo public class
  • Python:基于nosetest是否运行的条件变量

    我正在运行鼻子测试 它有一个设置功能 需要加载与生产数据库不同的数据库 我使用的 ORM 是 peewee 它要求在定义中设置模型的数据库 所以我需要设置一个条件变量 但我不知道使用什么条件来检查 nostest 是否正在运行该文件 我在
  • Numpy排列浮点不一致

    我有一个相当简单的 numpy 任务 创建一个长数组 每个元素递增 0 001 当然 np arange就是答案 我将自己限制为默认精度 float64 对结果的一个简单检查是数组的每 1000 个元素应该具有相同的小数部分 我通过绘图检查
  • 如何优化这个 CUDA 内核

    我已经分析了我的模型 似乎该内核约占我总运行时间的 2 3 我一直在寻找优化它的建议 代码如下 global void calcFlux double concs double fluxes double dt int idx blockI
  • 如何在 Linux (Red Hat/CentOS) 上更新到特定 R 版本,并保留以前的版本?

    也许更准确的标题是 如何在 Linux Red Hat CentOS 上从就地 EPEL R 安装切换到并行 特定于版本 R 安装 一个 可能是典型的 在 Linux 上升级 R 的故事 History 在过去的某个时刻 我使用由 RHEL
  • IE 在模态中失去对输入字段的焦点

    我有一个相当复杂的网络应用程序 我已将其压缩为以下两个 HTML 页面 但问题仍然存在 问题 在 IE 8 和 9 中 厚盒模式 iframe 的输入字段在一秒 或更短时间 后失去焦点 它仅在模态中发生 如果您自行加载页面 焦点不会丢失 我
  • 如何为 JavaScript 生成的文本框附加 onclick 事件?

    我有一个表行 其中包含一个文本框 它有一个显示 JavaScript 日历的 onclick 我正在使用文本框向表中添加行 但我不知道如何将 onclick 事件附加到 JavaScript 生成的文本框
  • MyFaces 中的内存泄漏

    编辑 您可以在下面的评论中找到的解决方案假设更改 JSF 实现从 MyFaces 到 太阳的莫贾拉 Hi 我在 MyFaces 2 0 0 上遇到了非常烦人的问题 更准确地说 我也在 2 0 1 和 2 0 2 上检查过它 问题仍然存在 我
  • 如何使用 RDFLib 解析大数据集?

    我正在尝试使用 RDFLib 3 0 解析几个大图 显然它处理第一个图并在第二个图上死掉 MemoryError 看起来 MySQL 不再支持作为存储 您能建议一种以某种方式解析这些图的方法吗 Traceback most recent c
  • 在 Mac OS X 上使用 Python 生成新的非阻塞进程

    我找到了一些文章甚至堆栈 overflow针对这个主题的问题 但我仍然做不到 我想要做的是从 python 打开一个 firefox 实例 那么python应用程序应该继续关注自己的事情并忽略firefox进程 我能够使用以下方法在 Win
  • 如何在R中使用grep匹配表达式的开头和结尾

    我试图用 grep 命令匹配表达式的开头和结尾 但我无法做到这一点 例如 考虑以下表达式 filenames lt c S2abc 6h S2abc 4h S2abc 0h S4abc 6h S2xyz 6h 我想找到所有以 S2 开头并以
  • 如果特定文件发生更改,如何自动收到警告?

    我有一个 php 项目 当我从另一个存储库中提取并且composer lock 文件发生更改时 我应该运行composer phar install dev git 如何自动警告我 询问我是否要运行这个命令 我想某种挂钩可以解决这个问题 但
  • 通过将参数传递给 url 在谷歌地图上绘制圆圈

    我想在给定的谷歌地图网址上画一个圆圈作为叠加层 这是没有使用谷歌地图 API 的情况 因此 我想知道是否可以通过仅将某些参数传递给地图网址来实现 我正在使用的网址是 https maps google com maps saddr M5J
  • JAX-RS:是否有用于根元素、列表的一部分、Web 服务中的参数的 json 序列化器

    目前我正在设计一个 RESTful API 并使用 JAX RS 作为后端 许多响应具有以下简单形式 someList item1 item2 itemn 重要的是数组的字段名称 客户端需要它 EmberJS 数据 我尝试使用标准 Resp
  • 如何将 N 个本地最顶层提交转换为 MQ 补丁?

    我想将我的最后一次提交安排为 MQ 补丁 所有提交都是本地的 从不推送到服务器 但并非所有本地提交都会被转换 假设我进行了 10 次提交 从未推送 现在我希望将最后 5 次提交转换为补丁 我该怎么做 简洁版本 hg qimport r 5
  • Android:从触摸事件获取原始位图数据

    Is there a possibility to get an array bitmap with the raw data of the touched spots on an Android touch display See ill
  • Flutter 从 Future 方法返回 bool 类型

    这个问题与this https stackoverflow com questions 52477468 flutter futurebool vs bool type但解释对我的用例并没有多大帮助 我有一个 Future 类型的方法 它返
  • java中的动态方法调度

    class A int a 10 public void show System out println Show A a class B extends A public int b 20 public void show System
  • SQL Server 使用参数导致结果缓慢

    我有一个选择一些数据的查询 我在其中传递了一些参数 DECLARE FromAccDocNo INT 1 ToAccDocNo INT 999999999 FromDate CHAR 10 1900 01 01 ToDate CHAR 10