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

09-05-12 spikeme
临时表有什么用?有人说主要有如下用处:

1.暂存中间结果,以便再处理或者格式化。

2.提高效率, 不用每次都再次查詢數據庫, 這在一些後台數據查詢中對資源, 性能影響比較大

但是,如果只是保存中间结果,那为什么不保存到缓存中去,缓存效率不比数据库效率更高吗。

因为做了好几年项目了,从来没有用过,所以想了解下,谢谢。

beepbug
2009-05-13 07:35
临时表是持久化的。

usejava
2009-05-13 08:49
临时表是数据库session隔离的,也就是说多个数据库连接可以同时使用一个临时表,而数据互相不可见。一般在session结束或者commit后数据消失。

临时表主要用于存放中间结果,对性能提高有限。因为临时表使用Temp表空间,碎片比较厉害。

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

xmuzyu
2009-05-13 15:02
to acoder

呵呵,说的很有道理。

beepbug
2009-05-13 18:48
实际用的比较多的一个临时表用法(或用途),供参考:

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

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

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

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

usejava
2009-05-14 09:55
同意beepbug的观点,临时表本来就不是用来做缓存的。

beepbug
2009-05-14 19:49
>>>临时表相当EJB中有态Bean,就是使用缓存实现的。

第一次听到有这样说法,能不能展开说说?

猜你喜欢