时间:2021-07-01 10:21:17 帮助过:12人阅读
require dirname(__FILE__) . '/../connection.php';mysql_select_db("news",$connextion);mysql_query("SET NAMES utf8");$query = mysql_query("SELECT * FROM temp_t where mykey = '1'");while($rows = mysql_fetch_array($query)){	mysql_query("UPDATE temp_t SET mykey='2' WHERE id='".mysql_real_escape_string($rows['id'])."'");	mysql_query("INSERT INTO table1 (id,title,content,date) values ('".mysql_real_escape_string($rows['id'])."','".mysql_real_escape_string($rows['title'])."','".mysql_real_escape_string($rows['content'])."','".mysql_real_escape_string($rows['date'])."'");}mysql_close($connextion);  require dirname(__FILE__) . '/../connection.php';mysql_select_db("news",$connextion);mysql_query("SET NAMES utf8");$query = mysql_query("SELECT * FROM temp_t where mykey = '1'");$jon = array();while($rows = mysql_fetch_array($query)){	$jon['a'] = $rows['id'];	$jon['b'] = $rows['title'];	$jon['c'] = $rows['content'];	$jon['d'] = $rows['date'];	$pjon .= json_encode($jon).',';}mysql_close($connextion);$njso = json_decode('['.substr($pjon,0,-1).']');foreach($njso as $nx){		if($nx->a){		require dirname(__FILE__) . '/../connection.php';		mysql_select_db("news",$connextion);		mysql_query("SET NAMES utf8");		mysql_query("UPDATE temp_t SET mykey='2' WHERE id='".mysql_real_escape_string($nx->a)."'");		mysql_query("INSERT INTO table1 (id,title,content,date) values ('".mysql_real_escape_string($nx->a)."','".mysql_real_escape_string($nx->b)."','".mysql_real_escape_string($nx->c)."','".mysql_real_escape_string($nx->d)."'");		mysql_close($connextion);	}}  
  依次执行这两句就可以了  
 INSERT INTO table1 (id,title,content,date) values  
   SELECT id, title,content,date from temp_t where mykey = '1'  
  
 UPDATE temp_t SET mykey='2' WHERE mykey = '1'  
  
 不需劳驾 php 转交  
  
 既然 temp_t 是临时存放,那么转移后的数据为何不删除呢? 
  依次执行这两句就可以了  
 INSERT INTO table1 (id,title,content,date) values  
   SELECT id, title,content,date from temp_t where mykey = '1'  
  
 UPDATE temp_t SET mykey='2' WHERE mykey = '1'  
  
 不需劳驾 php 转交  
  
 既然 temp_t 是临时存放,那么转移后的数据为何不删除呢?  
  
 temp_t的数据还不能删,insert时还有一个判断,就是title不重复(避免重复插入)  
 按照老大的意思,这样执行就可以了?还没测试,得停掉cron脚本。  
 弱弱的问一句,依老大的经验,300MB数据表,像这样一次插入2000-3000条记录,这个脚本大概要运行多长时间,耗费多少内存?是不是my.cnf里要增加某些值的内存,用来加速INSERT和SELECT的执行时间?再次感谢。  
  
  
require dirname(__FILE__) . '/../connection.php';mysql_select_db("news",$connextion);mysql_query("SET NAMES utf8");$query = mysql_query("INSERT INTO table1 (id,title,content,date) values SELECT id, title,content,date from temp_t where mykey = '1'");$query = mysql_query("UPDATE temp_t SET mykey='2' WHERE mykey = '1'");}mysql_close($connextion);    1:首先临时表,又没对外读取?如果有为啥不memcache,然后table1在去读取memcache回来?  
  
 2:300m 不算大吖。别人文学站,冬不冬一个表就上10G的。一样复制来去。  
  
 3:以前公司做个项目,1个表就400万条数据,采用的方法,从临时表里,1条1条的读取,慢慢读,不用把所有事情挤在一起来出来,这样虽然是时时刻刻的运行着,总共比卡死好吖。  
 
  1:首先临时表,又没对外读取?如果有为啥不memcache,然后table1在去读取memcache回来?  
  
 内存本来就不够,还装memcache……人家是nginx服务器集群,俺这块是几十元的虚拟空间……  
  
 10G的表复制,是不是my.cnf里需要增加某些值的大小?  
 总感觉自己的表300M运行速度慢,还经常卡死。人家天文数字,频繁读写的照样工作顺畅。 
  
 1:首先临时表,又没对外读取?如果有为啥不memcache,然后table1在去读取memcache回来?  
  
 内存本来就不够,还装memcache……人家是nginx服务器集群,俺这块是几十元的虚拟空间……  
  
 10G的表复制,是不是my.cnf里需要增加某些值的大小?  
 总感觉自己的表300M运行速度慢,还经常卡死。人家天文数字,频繁读写的照样工作顺畅。  
  
  
 那你是用第三条好点,无论你多大多复杂的数据,1条1条的来。1-2秒1条,1天下来也很恐怖了。  
 没必要一次倒那么多出去的,如果非的一次倒,多大的集团公司也不敢这样做的。