mysql中的临时表和内存表使用方法

mysql中的临时表和内存表使用方法

ID:34724572

大小:67.18 KB

页数:3页

时间:2019-03-10

mysql中的临时表和内存表使用方法_第1页
mysql中的临时表和内存表使用方法_第2页
mysql中的临时表和内存表使用方法_第3页
资源描述:

《mysql中的临时表和内存表使用方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Mysql中的临时表和内存表使用方法当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后多这些表运行查询。创建临时表很容易,给正常的CREATETABLE语句加上TEMPORARY关键字:CREATETEMPORARYTABLEtmp_table(nameVARCHAR(10)NOTNULL,valueINTEGERNOTNULL)临时表将在你连接MySQL期间存在。当你断开时,M

2、ySQL将自动删除表并释放所用的空间。当然你可以在仍然连接的时候删除表并释放空间。DROPTABLEtmp_table如果在你创建名为tmp_table临时表时名为tmp_table的表在数据库中已经存在,临时表将有必要屏蔽(隐藏)非临时表tmp_table。如果你声明临时表是一个HEAP表,MySQL也允许你指定在内存中创建它:CREATETEMPORARYTABLEtmp_table(nameVARCHAR(10)NOTNULL,valueINTEGERNOTNULL)TYPE=HEAP因为HEAP表存储

3、在内存中,你对它运行的查询可能比磁盘上的临时表快些。然而,HEAP表与一般的表有些不同,且有自身的限制。详见MySQL参考手册。正如前面的建议,你应该测试临时表看看它们是否真的比对大量数据库运行查询快。如果数据很好地索引,临时表可能一点不快。----------------------mysql优化:内存表和临时表CIC有着非常庞大的数据,对这些数据进行拆分就涉及到OLAP的知识。需要创建很多个中间临时表用来进行切分操作。由于直接使用临时表来创建中间表,其速度不如人意,因而就有了把临时表建成内存表的想法。但内

4、存表和临时表的区别且并不熟悉,需要查找资料了。一开始以为临时表是创建后存在,当连接断开时临时表就会被删除,即临时表是存在于磁盘上的。而实际操作中发现临时表创建后去目录下查看发现并没有发现对应的临时表文件(未断开链接).因而猜测临时表的数据和结构都是存放在内存中,而不是在磁盘中.这样一想内存表不是也是存在在内存中吗,那么他和临时表有什么区别?他们的速度是什么样子?查找了官方手册有以下的一些解释:TheMEMORYstorageenginecreatestableswithcontentsthatarestore

5、dinmemory.Formerly,thesewereknownasHEAPtables.MEMORYisthepreferredterm,althoughHEAPremainssupportedforbackwardcompatibility.EachMEMORYtableisassociatedwithonediskfile.Thefilenamebeginswiththetablenameandhasanextensionof.frmtoindicatethatitstoresthetabledefi

6、nition.由此可以看出来内存表会把表结构存放在磁盘上,把数据放在内存中。并做了以下实验:临时表mysql>createtemporarytabletmp1(idintnotnull);QueryOK,0rowsaffected(0.00sec)mysql>showcreatetabletmp1;+-------+----------------------------------------------------------------------------------------------+

7、Ta

8、ble

9、CreateTable

10、+-------+----------------------------------------------------------------------------------------------+

11、tmp1

12、CREATETEMPORARYTABLE`tmp1`(`id`int(11)NOTNULL)ENGINE=MyISAMDEFAULTCHARSET=utf8

13、+-------+-------------------------------------------

14、---------------------------------------------------+1rowinset(0.00sec)内存表mysql>createtabletmp2(idintnotnull)TYPE=HEAP;QueryOK,0rowsaffected(0.00sec)mysql>showcreatetabletmp2;+-------+------------------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。