创建临时表的语句如下:
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
而直接将查询结果导入临时表的创建语句是:
CREATE TEMPORARY TABLE tmp_table SELECT * FROM tables
临时表创建好之后就可以查询了。在每个mysql链接断开时临时表会自动删除,手工删除临时表的语句和删除普通表一样:
DROP TABLE tmp_table
另外还有一种临时表HEAP表
如果你声明临时表是一个HEAP表,MySQL也允许你指定在内存中创建它:
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP
因为HEAP表存储在内存中,你对它运行的查询可能比磁盘上的临时表快些。然而,HEAP表与一般的表有些不同,且有自身的限制。详见MySQL参考手册。
正如前面的建议,你应该测试临时表看看它们是否真的比对大量数据库运行查询快。如果数据很好地索引,临时表可能一点不快。