问题标签 [table-variable]
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 - 在 T-SQL 中,如何在子查询中引用表变量?
我已经声明了一个表变量“@t”,并正确执行了“INSERT-INTO-SELECT”。当我尝试通过一些额外的计算来查询表变量以进行每组行编号时,直接使用“@t”时出现“必须声明变量”或使用“@t”别名时出现“无效的对象名称”错误'。请多多指教。
sql-server-2008 - 在 MS SQL Server 中,将行插入表变量突然变得非常缓慢
在 MS SQL Server 2008 中,将行插入表变量突然变得非常缓慢。表变量以及查询和插入行的创建是在存储过程中完成的,它变得非常慢。
查询几乎立即完成,返回一个小集合(10 行,1 列整数),并且需要 50 秒以上的时间才能插入到表变量中。我切换回临时表,这很好,操作在几微秒内发生。
sql - 如何在动态 sql 语句中使用表变量?
在我的存储过程中,我在我的过程之上声明了两个表变量。现在我试图在动态 sql 语句中使用该表变量,但在执行该过程时出现此错误。我正在使用 Sql Server 2008。
这就是我的查询的样子,
我收到以下错误,
必须声明表变量“@RelPro”。必须声明表变量“@TSku”。
我试图将表格放在动态查询的字符串块之外,但无济于事。
performance - CTE(通用表表达式)与临时表或表变量,哪个更快?
CTE
(Common Table Expression) vs Temp tables
or Table variables
,哪个更快?
sql - 如何在 SQL-Server 中删除表变量?我应该这样做吗?
我在脚本中有一个表变量(不是存储过程)。两个问题:
- 如何删除表变量?Drop Table @varName 给出“不正确的 snytax”错误。
- 我应该总是这样做吗?我听说这是一个很好的做法。像这样的小脚本真的有必要吗?
这是我的代码:
sql-server - 动态查询结果到临时表或表变量中
我有一个使用 sp_executesql 生成结果集的存储过程,结果中的列数可能会有所不同,但会采用 Col1 Col2 Col3 等形式。
我需要将结果放入临时表或表变量中,以便我可以使用它。问题是我需要定义临时表的列,我无法使用 sp_executesql 动态地执行此操作,因为在执行命令后临时表的范围丢失了。
我玩弄了使用全局临时表的想法,因为范围允许动态创建它,但是,全局临时表很有可能会通过此过程的并发执行来更新。
有任何想法吗?
sql-server - 奇怪的 SQL Server 延迟加载表变量?
我在 SQL Server 2008 中遇到了一个误导性错误,我想知道是否有人可以解释发生在我身上的事情?
我有一个像这样的存储过程:
实际的存储过程更复杂,但这是要点。
在运行 SP 时,我会在“字符串或二进制数据将被截断”错误之前获得大量输出行。错误中的特定行引用指向上面主 SELECT 语句中的某个位置,但经过一段时间的调试后,我发现我在开始时放在交叉引用中的值太大并且修复了它。
但我的问题是:
SQL Server 是如何在没有完成插入交叉引用行的情况下执行主 SELECT 语句的?是否有某种延迟处理?延迟加载表变量?
为什么“字符串或二进制数据将被截断”消息没有指向它实际发生的位置?还是我做错了?
谢谢,雷
编辑
我认为这一定与表变量的 LEFT JOIN 有关,并且 WHERE 子句中不涉及它的列。SQL Server 似乎已将表的准备工作留到需要它之前(在 INNER JOIN 完成之后),并且当它已经准备好要选择的大部分结果集时出错。
我也注意到成功插入到@cross_reference 中的值确实显示在返回的结果集中。而因太大而无法插入的行只显示 NULL。
tsql - 提高删除表变量的性能
我已经看到在 t-sql 中对普通表进行删除的性能调整。
但是对表变量的删除是否有性能调整?
编辑
这是一个示例:绘图变得更厚,因为 UserExclusionsEvaluate 实际上是一个 CTE,但我将首先尝试围绕表变量对其进行优化(如果可能的话)。CTE 本身运行速度非常快。只是删除速度很慢。
在当前的化身中,@UsersCriteria 是:
我已经尝试将@UsersCriteria 作为非主要并尝试使用集群非集群。
也有可能是IN的问题。我还尝试过对子查询进行 JOIN。
编辑:
好消息! 在大量使用 SQL 之后,包括将 suquery 移动到链式 CTE、尝试表提示等等等。
从表变量到临时表的简单更改显着提高了性能。
这真的很有趣,因为删除自己运行良好,子查询(在 CTE 上)自己运行良好。但是将两者混合起来非常缓慢。
我猜在子查询中使用 CTE 时优化器无法启动?也许当与删除混合。
sql - 使用 IN (NULL) 查询 SQL Server 不起作用
当我定义“用户定义的表类型”时,为:
我在这个表变量中放置了 0 和 null。然后我做这个查询:
只会得到item=0
不item is null
简单地说:SELECT something FROM theTable WHERE item IN (0, NULL)
不工作(虽然没有错误)它必须是SELECT something FROM theTable WHERE item=0 OR item IS NULL
所以,我的问题是,如果我喜欢使用User-Defined Table Type,但我还需要使用 NULL 值。如何正确执行查询以获取包含空项的结果。
谢谢(顺便说一句,我使用 MS SQL Server 2008 R2)