问题标签 [parameter-spoofing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SQL Server 中的参数嗅探(或欺骗)
不久前,我有一个查询,我为我的一个用户运行了很多。它仍在不断发展和调整,但最终稳定下来并运行得非常快,因此我们从中创建了一个存储过程。
到目前为止,一切正常。
但是,存储过程很慢。查询和proc之间没有实质性区别,但速度变化很大。
[背景,我们正在运行 SQL Server 2005。]
一位友好的本地 DBA(不再在这里工作)看了一眼存储过程并说“参数欺骗!” (编辑:虽然它似乎也可能被称为“参数嗅探”,这可能解释了当我试图搜索它时谷歌点击量的缺乏。)
我们将一些存储过程抽象为第二个存储过程,将对这个新的内部过程的调用包装到预先存在的外部过程中,称为外部过程,嘿,转眼间,它与原始查询一样快。
那么,什么给了?有人可以解释参数欺骗吗?
奖励积分
- 强调如何避免它
- 建议如何识别可能的原因
- 讨论缓解情况的替代策略,例如统计数据、索引、键
java - selectOne 和 selectMany 选项是否受 SelectItems 限制?
JSF selectOne 和 selectMany 控件是否只允许提交给定 selectItems 中定义的值?我担心参数欺骗,如果这是内置的,我不需要验证器来确保所选值是有效选择之一。
stored-procedures - SQL Server 2014 - 没有从具有自定义表类型参数的标量值函数中获取值发送到存储过程
我有一个像这样的表类型:
从存储过程中,我正在创建这种类型的变量并向其添加值。
添加值后,我将其传递给另一个存储过程。
但是在 中usp_ABC
,我正在调用标量值函数来从表中获取tbl_RawData
与 Month、Year、CountryId 和 BranchId 相关的数据@Tbl
。我得到 0 个结果。
当我传递实际值时,我从函数中获取值。
为了避免参数欺骗,我创建了一个临时表变量并将所有值@Tbl
插入其中。
我是否遗漏了什么或参数欺骗仍在发生。请提出任何解决方案或替代方案。