转载网上搜的总结 有点启发
问题总结:
临时表 物理表 以及内存表 三个表我都做了10W 次的数据 查询 增加 删除 修改的工作 结论如下:
临时表在各项指标中 均超过内存表以及物理表 无疑是效率最快的! 查询效率 内存表和临时表效率接近,物理表查询效率微慢,增删改 效率 (所耗时间)物理表 > 内存表 > 临时表,
结论为 物理表有详细的日志记录,但效率不高,内存表提高了效率,同样日志也很全,但是要分配KEEP池空间(太大占内存),临时表 效率最高,日志记录较少,可以用作存储过程缓存数据使用,缺点就是,还是要占用大量的IO读写操作,效率并没有什么质的飞跃(时间缩短较物理表缩短1半),慎用!无论是事务还是会话型 都要清空数据 所以生命周期有限,使用时需特别注意!
补充一点,临时表比普通表好的重点不在于不产生redo log,而是可以避免在大数据量操作的时候,不用临时表的单个查询会将大量数据直接读进内存,往往造成内存不够用,此时系统会将数据部分存储在磁盘上,这样会不停的在内存和磁盘上进行数据交换,这个操作会极大的影响效率,比单纯的读I/O更加浪费时间。
所以在进行大数据量操作的时候,一般建议用临时表,如果数据量比较小,在保证正确执行计划的前提下临时表的确没什么大作用。
问题总结:
临时表 物理表 以及内存表 三个表我都做了10W 次的数据 查询 增加 删除 修改的工作 结论如下:
临时表在各项指标中 均超过内存表以及物理表 无疑是效率最快的! 查询效率 内存表和临时表效率接近,物理表查询效率微慢,增删改 效率 (所耗时间)物理表 > 内存表 > 临时表,
结论为 物理表有详细的日志记录,但效率不高,内存表提高了效率,同样日志也很全,但是要分配KEEP池空间(太大占内存),临时表 效率最高,日志记录较少,可以用作存储过程缓存数据使用,缺点就是,还是要占用大量的IO读写操作,效率并没有什么质的飞跃(时间缩短较物理表缩短1半),慎用!无论是事务还是会话型 都要清空数据 所以生命周期有限,使用时需特别注意!
补充一点,临时表比普通表好的重点不在于不产生redo log,而是可以避免在大数据量操作的时候,不用临时表的单个查询会将大量数据直接读进内存,往往造成内存不够用,此时系统会将数据部分存储在磁盘上,这样会不停的在内存和磁盘上进行数据交换,这个操作会极大的影响效率,比单纯的读I/O更加浪费时间。
所以在进行大数据量操作的时候,一般建议用临时表,如果数据量比较小,在保证正确执行计划的前提下临时表的确没什么大作用。