SQL中表变量的不足

数据库 SQL Server
下文将为您介绍SQL中的表变量相对于SQL中的临时表的一些缺陷,供您参考,希望对帮您更好理解SQL中表变量和临时表的区别。

SQL中的表变量并不是***无缺的,与SQL中的临时表相比,它存在着一些缺陷,具体如下:

在表变量上不能创建非聚集索引(为 PRIMARY 或 UNIQUE 约束创建的系统索引除外)。与具有非聚集索引的临时表相比,这可能会影响查询性能。

表变量不像临时表那样可以维护统计信息。在表变量上,不能通过自动创建或使用 CREATE STATISTICS 语句来创建统计信息。因此,在大表上进行复杂查询时,缺少统计信息可能会妨碍优化器确定查询的***计划,从而影响该查询的性能。

在初始 DECLARE 语句后不能更改表定义。

表变量不能在 INSERT EXEC (但经本人测试在sql2005可以使用insert vartable exec)或 SELECT INTO 语句中使用。

表类型声明中的检查约束、默认值以及计算所得的列不能调用用户定义的函数。

如果表变量是在 EXEC 语句或 sp_executesql 存储过程外创建的,则不能使用 EXEC 语句或 sp_executesql 存储过程来运行引用该表变量的动态 SQL Server 查询。由于表变量只能在它们的本地作用域中引用,因此 EXEC 语句和 sp_executesql 存储过程将在表变量的作用域之外。但是,您可以在 EXEC 语句或 sp_executesql 存储过程内创建表变量并执行所有处理,因为这样表变量本地作用域将位于 EXEC 语句或 sp_executesql 存储过程中。
 

 

【编辑推荐】

为您详解SQL Server中的全局变量

详解SQL中循环结构的使用

sql循环语句和多分支语句的语法介绍

SQL循环执行while控制

SQL中游标嵌套循环的示例

 

责任编辑:段燃 来源: 互联网
相关推荐

2010-09-08 17:35:25

SQL表变量

2011-03-28 10:17:39

sql server

2010-09-06 13:34:37

Sql Server语句

2011-06-21 10:33:02

VMware

2010-09-10 09:47:14

SQL变量指示

2010-07-05 08:57:48

SQL Server虚

2010-11-12 10:23:05

SQL Server变

2010-09-10 10:39:00

SQL变量声明

2010-11-12 10:53:41

sql server表

2010-10-27 16:05:53

oracle查询

2010-07-12 15:16:04

SQL Server

2011-03-23 13:00:22

SQL Server虚拟内存

2010-09-10 09:38:36

SQL系统变量

2010-10-12 13:37:54

mysql索引

2010-09-10 13:14:47

SQL变量

2010-11-26 15:18:10

mysql变量赋值

2010-11-12 10:31:25

SQL Server游

2010-03-31 15:03:54

Oracle执行

2010-09-10 10:32:31

SQL变量Transact

2010-08-24 16:41:59

cellpaddingcellspacing
点赞
收藏

51CTO技术栈公众号