2010年12月22日

[SQL]表变量和临时表

摘要: 1. 为什么要使用表变量表变量是从2000开始引入的,微软认为与本地临时表相比,表变量具有如下优点: a.与其他变量的定义一样,表变量具有良好的定义范围,并会被自动清除; b.在存储过程中使用表变量会减少存储过程重新编译的发生; c.表变量需要更少的锁请求和日志资源; d.可以在表变量上使用UDF,UDDT,XML。2.表变量的限制与临时表相比,表变量存在着如下缺点: a.在表变量上没有统计信息,查询优化器根据固定的预估值来选择执行计划,在数据很多的情况下,会导致查询优化器选择很差的执行计划; b.不能直接在表变量上创建索引,但可以通过创建约束(主键、唯一)来建立索引; c.在DECLARE后 阅读全文

posted @ 2010-12-22 09:41 Ron 阅读(8752) 评论(4) 推荐(3) 编辑

SQL表变量与临时表区别 + 临时表遍历(非游标)

摘要: 问题 1:为什么在已经有了临时表的情况下还要引入表变量?解答 1:与临时表相比,表变量具有下列优点:如 SQL Server 联机丛书“表”(Table) 一文中所述,表变量(如局部变量)具有明确定义的范围,在该范围结束时会自动清除这些表变量。与临时表相比,表变量导致存储过程的重新编译更少。涉及表变量的事务仅维持表变量上更新的持续时间。因此,使用表变量时,需要锁定和记录资源的情况更少。因为表变量具有有限的范围并且不是持久性数据库的一部分,所以事务回滚并不影响它们。问题 2:如果说使用表变量比使用临时表导致存储过程的重新编译更少,这意味着什么?解答 2:下面的文章讨论了重新编译存储过程的一些原因 阅读全文

posted @ 2010-12-22 09:40 Ron 阅读(1247) 评论(0) 推荐(0) 编辑

导航