临时表、表变量、CTE(公用表表达式)

临时表,保存在 tempdb中,

表变量,保存在内存中,他和临时表的区别是 一个是保存在tempdb,一个保存在内存中

公用表表达式cte是sqlserver2005新增的,是把一个记录集当做一个变量来使用,他跟表变量的区别是不需要insert数据,所以应该比表变量更高效;

如果只使用一次cte应该是最好的,如果要重复多次使用同一个记录集,我个人认为还是表变量
如果还需要用到truncate语句来清除临时的数据,那最好用临时表,因为表变量不支持truncate,
truncate table 是通过释放存储表数据所用的数据页来删除数据。而表变量的数据是保存在内存中的,而非磁盘中,那么就truncate table 试图释放表变量并不存在的 “数据页”, 当然会报错了

posted on 2017-11-07 14:01  D-Z-K  阅读(256)  评论(0编辑  收藏  举报

导航