您好,欢迎来到智榕旅游。
搜索
您的当前位置:首页MySQL临时表的简单用法(复制)

MySQL临时表的简单用法(复制)

来源:智榕旅游
MySQL临时表的简单⽤法(复制)

当⼯作在⾮常⼤的表上时,你可能偶尔需要运⾏很多查询获得⼀个⼤量数据的⼩的⼦集,不是对整个表运⾏这些查询,⽽是让MySQL每次找出所需的少数记录,将记录选择到⼀个临时表可能更快些,然后在这些表运⾏查询。创建临时表很容易,给正常的CREATE TABLE语句加上TEMPORARY关键字:CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,value INTEGER NOT NULL)

临时表将在你连接MySQL期间存在。当你断开时,MySQL将⾃动删除表并释放所⽤的空间。当然你可以在仍然连接的时候删除表并释放空间。

DROP TABLE tmp_table

如果在你创建名为tmp_table临时表时名为tmp_table的表在数据库中已经存在,临时表将有必要屏蔽(隐藏)⾮临时表tmp_table。如果你声明临时表是⼀个HEAP表,MySQL也允许你指定在内存中创建它:CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,value INTEGER NOT NULL) TYPE = HEAP

因为HEAP表存储在内存中,你对它运⾏的查询可能⽐磁盘上的临时表快些。然⽽,HEAP表与⼀般的表有些不同,且有⾃⾝的限制。详见MySQL参考⼿册。

正如前⾯的建议,你应该测试临时表看看它们是否真的⽐对⼤量数据库运⾏查询快。如果数据很好地索引,临时表可能⼀点不快。1. 临时表再断开于mysql的连接后系统会⾃动删除临时表中的数据,但是这只限于⽤下⾯语句建⽴的表:定义字段:

CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,value INTEGER NOT NULL)

2)直接将查询结果导⼊临时表

CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name

2. 另外mysql也允许你在内存中直接创建临时表,因为是在内存中所有速度会很快,语法如下:CREATE TEMPORARY TABLE tmp_table (name VARCHAR(10) NOT NULL,value INTEGER NOT NULL) TYPE = HEAP

3. 从上⾯的分析可以看出临时表的数据是会被清空的,你断开了连接就会被⾃动清空,但是你程序中不可能每发⾏⼀次sql就连接⼀次数据库吧(如果是这样的话,那就会出现你担⼼的问题,如果不是就没有问题),因为只有断开数据库连接才会被清空数据,在⼀个数据库连接⾥⾯发⾏多次sql的话系统是不会⾃动清空临时表数据的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- zrrp.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务