36-临时表
-
内存表与临时表
内存表是引擎为memory的表,临时表可以使用各种引擎类型,比如采用InnoDB,写数据的时候写入磁盘,可以用memory引擎,写入内存。
-
临时表特性
临时表在使用上有以下几个特点:
- 建表语法是 create temporary table …。
- 一个临时表只能被创建它的 session 访问,对其他线程不可见。所以,图中 session A 创建的临时表 t,对于 session B 就是不可见的。
- 临时表可以与普通表同名。
- session A 内有同名的临时表和普通表的时候,show create 语句,以及增删改查语句访问的是临时表。
- show tables 命令不显示临时表。
由于临时表只能被创建它的 session 访问,所以在这个 session 结束的时候,会自动删除临时表。也正是由于这个特性,临时表就特别适合部分 join 优化这种场景。
-
临时表使用场景
由于不用担心线程之间的重名冲突,临时表经常会被用在复杂查询的优化过程中。其中,分库分表系统的跨库查询就是一个典型的使用场景。
原文:https://time.geekbang.org/column/article/80449