什么是内存表,临时表和数据透视表之间的区别?

时间:2009-06-26 19:34:41

标签: sql mysql sql-server database

关于SQL和查询,内存表,临时表和数据透视表之间的区别是什么?

2 个答案:

答案 0 :(得分:6)

  • 内存中的表是一个完全缓存的表,因此在查询时不会导致任何物理(硬盘)读取。或者,它是一个表值变量,在批处理或函数中声明,没有持久性。取决于“内存表”的含义:)

  • temp(orary)表是一个表,在不再需要时会自动删除,通常是在创建会话终止时。在MS SQL中,它们以#(或两个哈希,如果它们是全局临时表,在多个会话之间共享)开始,并且通常使用SELECT INTO #TEMPTABLE ...样式查询创建。

  • 数据透视表是一种特殊形式的查询,其中多行中的值被汇总,在轴上“旋转”,并成为列,然后汇总数据成为行。通常,这会发生在您按日期排序的行;这些可能会被“转动”,所以你最终会得到一月份的专栏,二月份的一列,三月份的一列等等。

答案 1 :(得分:2)

关于@temp tables vs #temp tables

的好读

我将其概括为:

@temp表变量存储在内存中......你使用它们越多,处理器成本就会越高......但是这些可以缓存,因此大部分时间都可以运行得更快。

#temp表存储在磁盘上,如果你在临时表中存储了很多数据,你可能想要这条路线,I.E。用于报告目的。

使用PIVOT and UNPIVOT只是“转动”结果的一种方式......所以它的内存访问与其他标准查询的执行方式类似。