• 内存表与临时表

    内存表是引擎为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