关于SQL和查询,内存表,临时表和数据透视表之间的区别是什么?
答案 0 :(得分:6)
内存中的表是一个完全缓存的表,因此在查询时不会导致任何物理(硬盘)读取。或者,它是一个表值变量,在批处理或函数中声明,没有持久性。取决于“内存表”的含义:)
temp(orary)表是一个表,在不再需要时会自动删除,通常是在创建会话终止时。在MS SQL中,它们以#(或两个哈希,如果它们是全局临时表,在多个会话之间共享)开始,并且通常使用SELECT INTO #TEMPTABLE ...样式查询创建。
数据透视表是一种特殊形式的查询,其中多行中的值被汇总,在轴上“旋转”,并成为列,然后汇总数据成为行。通常,这会发生在您按日期排序的行;这些可能会被“转动”,所以你最终会得到一月份的专栏,二月份的一列,三月份的一列等等。
答案 1 :(得分:2)
关于@temp tables vs #temp tables
的好读我将其概括为:
@temp表变量存储在内存中......你使用它们越多,处理器成本就会越高......但是这些可以缓存,因此大部分时间都可以运行得更快。
#temp表存储在磁盘上,如果你在临时表中存储了很多数据,你可能想要这条路线,I.E。用于报告目的。
使用PIVOT and UNPIVOT只是“转动”结果的一种方式......所以它的内存访问与其他标准查询的执行方式类似。