T-SQL 使用变量从视图中选择速度要慢得多

2023-12-29

我有一个在 where 子句中指定值时运行速度快(

SELECT *
FROM vwPayments
WHERE AccountId = 8155

...但是当该值是变量时运行缓慢(~3s):

DECLARE @AccountId BIGINT = 8155

SELECT *
FROM vwPayments
WHERE AccountId = @AccountId

为什么第二个查询的执行计划不同?为什么运行速度这么慢?


在第一种情况下,编译语句时参数值是已知的。优化器使用统计直方图为该特定参数值生成最佳计划。

当您定义局部变量时,SQL Server无法使用参数值来查找“最佳值”。由于参数值在编译时未知,因此优化器根据“均匀分布”计算估计行数。优化器提出了一个对于任何可能的输入参数值都“足够好”的计划。

另一篇有趣的文章几乎完全描述了您的情况,可以找到here http://www.sqlservercentral.com/blogs/practicalsqldba/2012/06/27/how-local-variable-or-optimize-for-unknown-resolve-parameter-sniffing/.

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

T-SQL 使用变量从视图中选择速度要慢得多 的相关文章

  • 如何使用 PHP 从 MSSQL 读取图像字段

    我正在创建一个网站 需要同步从离线 MSSQL 服务器读取的在线 MySQL 数据库 除图像字段外 所有通信和从 MSSQL 读取所有字段均工作正常 我已经使用 PHP 和 Mysql 一段时间了 知道如何向 MySQL 数据库插入 检索图
  • 如何将 SQL 结果存入 STRING 变量?

    我正在尝试获取 C 字符串变量或字符串数 组中的 SQL 结果 是否可以 我需要以某种方式使用 SqlDataReader 吗 我对 C 函数和所有功能非常陌生 曾经在 PHP 中工作 所以如果可以的话请给出一个工作示例 如果相关 我已经可
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • SQL Server:删除除系统数据库之外的所有数据库

    在 PowerShell 中 我使用以下代码删除所有非系统 SQL Server 数据库 invoke sqlcmd ServerInstance sqlInstanceName U sqlUser P sqlPass Query EXEC
  • 按小时拆分日期/时间数据并将日期/时间范围展开为行

    我正在尝试使用 SQL Server 将一系列日期 时间数据扩展为多行 例如 我的数据看起来像 Date StartTime EndTime EmployeeID ShiftType 10 1 2019 8 30 00AM 4 57 00P
  • ASP.NET 网站上的 XSS 攻击 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我遇到了很大的麻烦 请帮忙 我的网站
  • 如何在 SQL Server 中什么都不做[重复]

    这个问题在这里已经有答案了 可能的重复 T SQL 中的空语句 https stackoverflow com questions 3234871 empty statement in t sql 我怎样才能让它在 SQL Server 中
  • SQL Server 中的动态透视多列

    我有一张这样的桌子 Id Name FromAddress ToAddress 1 Joey ABC JKL 2 Joey DEF MNP 3 Joey GHI OQR 我正在 SQL Server 中寻找带有动态数据透视表的以下输出 Na
  • SQL Server Express 到 .mdf 文件的连接

    两部分问题 我使用 VS 2015 Update 3 创建了一个 ASP NET MVC 5 应用程序 我在本地计算机上完成了该项目 突然 我无法再通过 SQL Server 对象资源管理器连接到 mdf数据库文件并出现以下错误 无法打开数
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • 是否可以执行具有输出参数的 T-SQL 存储过程,同时忽略 SELECT 语句?

    我正在从另一个存储过程调用一个存储过程 并且我调用的过程有一个输出参数 然后我将输出值传输到局部变量中 这一切都很好 但问题是这个过程还有一个select其中的声明 所以当我exec 该过程的结果将在最终结果集中返回 有没有一种方法可以简单
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • T-sql、刻度、时间戳

    是否有可能在 t sql 中获得像 DateTime Ticks 这样的 C 内容 感谢帮助 您不太可能从 SQL 中获得与 DateTime Ticks 相同的精度 因为 SQL 不能以那么高的精度表达时间 SQL Server 只存储大
  • SQL Server 中的派生表

    我有这两个疑问 我不知道如何将它们组合在一起来制作派生表 我假设使用第二个查询作为主查询 并在主查询的 FROM 子句中使用第一个查询 SELECT EmailAddress Orders OrderID SUM ItemPrice Qua
  • MySQL 中的 UDF 性能

    我注意到 当查询在 SELECT 或 WHERE 子句中调用 UDF 时 MySQL 查询执行时间的性能会呈指数级下降 有问题的 UDF 查询本地表以返回标量值 因此它们不仅执行算术表达式 而且充当相关子查询 我通过简单地删除 UDF 并使
  • 该驱动程序未配置为集成身份验证

    尝试使用以下命令将我的 Java Web 应用程序与 MS SQL 服务器连接sqljdbc41 for jdk 1 8 这是数据库连接代码 Connection connection String url jdbc sqlserver l
  • 如何对 SQL Server Express 进行实时更改

    我一直在使用 VS studio 开发一个 ASP NET Web 应用程序 我正在使用 SQL Server Express 在开发过程中 我一直在我的服务器上测试我的网络应用程序 每次我需要更新数据库时 我都会简单地删除旧数据库 位于我
  • 自动创建n列表

    我想在一行中将 236 个 int 值存储到 sql 中 现在我必须声明该表 但我不想输入 236 倍的列名 列名应该是 BYTE001 BYTE002 或其他前缀 如 BYTE B INT 可以自动生成ColumnNames吗 我尝试以下
  • 在 SSIS 中使用合并任务的指南

    我有一个包含三个字段的表 其中一个是身份字段 我需要从具有其他两个字段的源中添加一些新记录 我正在使用SSIS 我认为我应该使用合并工具 因为其中一个源不在本地数据库中 但是 我对合并工具和正确的过程感到困惑 我有一个源 一个 Oracle
  • T-SQL 表名别名

    在我的 T SQL 脚本中 我多次引用相同的长表名称 我在不同的表上使用这个查询 有没有办法通过变量引用表名 如果是这样 我可以简单地在脚本将使用的顶部声明一个变量 只需设置值 我就可以在各种表上运行它 而无需在脚本中进行更改 有几个选择

随机推荐

  • 这个语法是什么 isNaN(+str!)

    找到了here https github com vuetifyjs vuetify blob 4d03847cce58569c285da7cc4328ea0b0ebd45d1 packages vuetify src util helpe
  • 在 gscatter 中获得更合理颜色的简单方法

    我正在寻找一种简单的方法来获得gscatter选择更合理的颜色 如下图所示 第 3 组和第 4 组的颜色非常相似 很难区分 我正在使用绘制我的数据gscatter X 1 X 4 assigns 我知道我可以使用scatter通过创建一个与
  • 为什么发电机不能酸洗?

    Python 的 pickle 我这里说的是标准 Python 2 5 2 6 2 7 不能 pickle 锁 文件对象等 它也不能 pickle 生成器和 lambda 表达式 或任何其他匿名代码 因为 pickle 实际上只存储名称引用
  • 需要处理具有非唯一多索引的串联数据帧

    这有效 import pandas as pd raw data type 1 1 1 id 1 2 3 name 1 Alex Amy df a pd DataFrame raw data columns type 1 id 1 name
  • 如何在 Keras 中将嵌入与可变长度输入连接起来?

    这是我正在研究的网络图 数据是表格和结构化的 左边 我们有一些能力这是连续的特征 在右边 我们可以有 N 个修饰符 每个修改器都有修饰符类型这是绝对的和一些统计数据这是连续的特征 如果只有一个修饰符这是运行良好的代码 import kera
  • 在静态 HTML 页面中进行 JQuery 搜索,并突出显示找到的单词

    我一直在尝试使用 JQuery 在静态 HTML 页面中进行简单的搜索 我不得不提的是 这只是我第一次使用 JQuery 我正在尝试更改页面中找到的单词的背景 这是我迄今为止尝试过的 myJavascript js document rea
  • 是否有任何主要的 C++ 实现实际上将“NULL”定义为“nullptr”?

    从 C 11 开始 标准允许宏NULL要么是一个值为零的整数文字 要么是类型的纯右值std nullptr t 任何决定更改其定义的标准库供应商NULL从一个整数到nullptr很可能会导致依赖 C 11 之前代码的客户端崩溃 是否有任何主
  • Tensorflow 张量重塑并用零填充

    有没有办法重塑张量并用零填充任何溢出 我知道 ndarray reshape 会这样做 但据我了解 将 Tensor 转换为 ndarray 需要在 GPU 和 CPU 之间进行翻转 Tensorflow 的 reshape 文档说 Ten
  • Clock_gettime() 仍然不是单调的 - 替代方案?

    正如众所周知的那样 参见 例如 这个老问题 https stackoverflow com questions 3657289 linux clock gettimeclock monotonic strange non monotonic
  • jQuery 可拖动输入元素

    我正在尝试使用 jQuery UI 使表单元素可拖动 例如 按钮 复选框 文本字段等 到目前为止我还没有运气 您有什么想法如何实现这一目标吗 也许晚了 3 年 但您可以调度事件并使用以下代码片段来实现更预期的行为 演示 jsFiddle h
  • 关于“Greasemonkey 入门”教程的建议 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java中根据第一个迭代变量对嵌套循环元素进行分组

    我有 2 个列表 第一个用于句子 第一个用于关键字 这个想法是检查句子是否有关键字 并将它们按顺序放入每个句子的列表中 如果这已经提前复制在这里 我很抱歉 List
  • Ransack:如何使用现有范围?

    将 Rails 2 应用程序转换为 Rails 3 我必须更换 gem搜索逻辑 https github com binarylogic searchlogic 现在 使用 Rails 3 2 8 和 gemRansack https gi
  • 来自另一个属性的属性占位符位置

    我需要从程序运行之前我不知道的位置将一些属性加载到 Spring 上下文中 所以我想如果我有一个没有位置的 PropertyPlaceholderConfigurer 它会读入my location从系统属性中 然后我可以在上下文中使用该位
  • 无需外星人即可将 rpm 转换为 deb?

    如何在不使用alien的情况下将rpm转换为deb 我无法在 ubuntu 19 中安装 Alien 它给出了无法找到包的错误 您可以使用如下命令将 rpm 转换为 deb 包 sudo apt get install ruby ruby
  • Windows Azure http 重定向的最佳实践

    我有一个天蓝色的网站 名为 http myapp cloudapp net 当然 这个网址有点难看 所以我设置 CNAME http blog smarx com posts custom domain names in windows a
  • 如何在 `aws-cli ec2` 命令中使用通配符?

    我有一些 EC2 实例 我想使用ec2 describe instances命令用于根据标签的特定值获取实例列表 该表显示了我的用例 Instance Value key Purpose Outcome InstanceA Going Fi
  • Node.js 中的 addListener(event,listener) 和 on(event,listener) 方法有什么区别?

    在这里我无法理解这两种方法之间的基本区别是什么 var events require events var eventEmitter new events EventEmitter var listner1 function listner
  • Java JNI:内存分配/分区

    使用JNI时 JNI二进制文件是使用自己的内存 还是使用分配给JVM的部分内存 Details 当您指定 Xmx1024m作为 JVM 选项 JVM 是否将所有 1024 mb 内存分配给 Java 对象 它是否将其中的一部分用于 Java
  • T-SQL 使用变量从视图中选择速度要慢得多

    我有一个在 where 子句中指定值时运行速度快 SELECT FROM vwPayments WHERE AccountId 8155 但是当该值是变量时运行缓慢 3s DECLARE AccountId BIGINT 8155 SELE