临时表有什么用?为什么不用缓存

临时表有什么用?有人说主要有如下用处:
1.暂存中间结果,以便再处理或者格式化。
2.提高效率, 不用每次都再次查詢數據庫, 這在一些後台數據查詢中對資源, 性能影響比較大

但是,如果只是保存中间结果,那为什么不保存到缓存中去,缓存效率不比数据库效率更高吗。
因为做了好几年项目了,从来没有用过,所以想了解下,谢谢。

临时表是持久化的。

临时表是数据库session隔离的,也就是说多个数据库连接可以同时使用一个临时表,而数据互相不可见。一般在session结束或者commit后数据消失。
临时表主要用于存放中间结果,对性能提高有限。因为临时表使用Temp表空间,碎片比较厉害。

主要看运算集中在什么地方,如果主要计算是在应用层中,那么就应该缓存在应用层的缓存中,而如果运算主要集中在数据库层,那么一般用临时表。

to acoder
呵呵,说的很有道理。

实际用的比较多的一个临时表用法(或用途),供参考:
如果有一查询,SQL语句非常复杂,执行开销也非常大,可以做一个切割,即写成两部分来合成功能。使前一部分出来的结果是不变或不经常改变的,就把它的结果生成一个临时表。以后就只需使用较简单的SQL语句。这样可以大大提高系统运行效率。

关键是你的这个缓存能象临时表一样支持结构化查询吗,可以和已经有的表进行级联吗。

关键是你的这个缓存能象临时表一样支持结构化查询吗,可以和已经有的表进行级联吗。

临时表相当EJB中有态Bean,就是使用缓存实现的。两者没有什么好比较,本来源头思维方式都不一样。

同意beepbug的观点,临时表本来就不是用来做缓存的。

>>>临时表相当EJB中有态Bean,就是使用缓存实现的。
第一次听到有这样说法,能不能展开说说?