php 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参考手册。

正如前面的建议,你应该测试临时表看看它们是否真的比对大量数据库运行查询快。如果数据很好地索引,临时表可能一点不快。

例子如下:

 
 
  • <?php 
  •         $link=mysql_connect('localhost','root','456789');  
  •      if($link){  
  •  
  •     mysql_select_db('cppc360',$link);  
  •     mysql_query("set names 'gbk'");  
  •     echo "数据库连接已经成功!";  
  •     }  
  •  
  • $temp_sql = "create temporary table tmp_query (tmp_id int(11) NOT NULL auto_increment PRIMARY KEY,id int(11) default NULL,area varchar(20) default NULL)";  
  •  
  • $temp_query = mysql_query($temp_sql);  
  • $sql="insert into tmp_query(id,area) select id,area from php168_item_content_1 where content like '%电厂%' order by id desc";  
  •    mysql_query($sql);  
  •  
  •     $sql="select * from tmp_query";  
  •     $query1=mysql_query($sql);  
  •     echo mysql_num_rows($query1);  
  •     while($rs=mysql_fetch_array($query1)){  
  •         echo $rs[id]."&nbsp;&nbsp;".$rs[area]."<br>";  
  •     }  
  • ?> 
  • 来源:http://www.alixixi.com/Dev/Web/PHP/php6/2007/2007020811417.html
  • http://database.51cto.com/art/201011/234786.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值