循环的php如下: for($j=0;$j<count($selectscriptresult);$j++){
$scriptid=$selectscriptresult[$j]['id'];
$wats_id=$productName.'_sc_'.$scriptid;
$updateidsql="update `script` set wats_script_id='$wats_id' where id=$scriptid";
$copyproject->query($updateidsql);
$selectoriginalscriptsql="select * from `script` where project=$source_pid";
$selectoriginalscriptresult=$copyproject->query($selectoriginalscriptsql);
$data_tempscript['originalid']=$selectoriginalscriptresult[$j]['id'];
$data_tempscript['originalname']=$selectoriginalscriptresult[$j]['name'];
$data_tempscript['copyid']=$scriptid;
$data_tempscript['copyname']=$selectscriptresult[$j]['name'];
$temp_scriptresult=$temp_script->add($data_tempscript);
}
核心意思就是在一张表中根据一条记录的id来update另外这条记录一个字段。然后去更新另外一张表
目前记录大概有1700条,每次循环个几百次,就失败了,mysql的log中也没有什么体现。
我怀疑是这个循环的效率有问题,请大家帮我看看。
$scriptid=$selectscriptresult[$j]['id'];
$wats_id=$productName.'_sc_'.$scriptid;
$updateidsql="update `script` set wats_script_id='$wats_id' where id=$scriptid";
$copyproject->query($updateidsql);
$selectoriginalscriptsql="select * from `script` where project=$source_pid";
$selectoriginalscriptresult=$copyproject->query($selectoriginalscriptsql);
$data_tempscript['originalid']=$selectoriginalscriptresult[$j]['id'];
$data_tempscript['originalname']=$selectoriginalscriptresult[$j]['name'];
$data_tempscript['copyid']=$scriptid;
$data_tempscript['copyname']=$selectscriptresult[$j]['name'];
$temp_scriptresult=$temp_script->add($data_tempscript);
}
核心意思就是在一张表中根据一条记录的id来update另外这条记录一个字段。然后去更新另外一张表
目前记录大概有1700条,每次循环个几百次,就失败了,mysql的log中也没有什么体现。
我怀疑是这个循环的效率有问题,请大家帮我看看。
解决方案 »
- mysql with rollup 多组统计 如何去掉子项汇总,保留最后条汇总?
- 大牛请进,mysql插入一条记录,插入的主键值与主键自增数值不一致的问题?
- 问一个数据库设计问题 是不是一个表可以有且只有一个字段?
- mysql自动关闭
- mysql 中mid和substring 的区别是什么?
- 可能是在mysql方面比较白吃的一个问题
- mysql数据同步的问题
- win98里用Delphi 访问mysql,Post 出错
- 我有一个别人email给我的da.sql(mysql)文件,我要想在自己的机器上使用它,该怎么做?
- 多表多表联接查询,求大牛优化
- mysql 如何实现靠select生成一个序列
- navicat 8备份数据库 数据库自动停了
set table1.col=table2.col2
id temp_id name
1 a
2 b
3 ctemp_id是根据id来做的,比如分别设置为sc_1,sc_2和sc_3,
这样的记录大概有1700条,我是用一个for循环来做的,觉得好像效率不高。各位给的办法都是还有另外一张表,现在没有那张表啊。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
(
id varchar(10) AUTO_INCREMENT,
temp_id varchar(10),
name varchar(20)
)
insert into test1(name) values('a1')
insert into test1(name) values('a2')现在要更新test1中temp_id的值,它的构成规则是这样的,两个字符sc加上id值,像上面两条记录如果id是1和2的话,temp_id就应该是sc_1和sc_2
现在是这样的情况,id值是系统自动生成的,我必须先得到id值,然后再得到temp_id值。
写了一个循环就是类似于顶贴这样的:for($j=0;$j<count($selectscriptresult);$j++){
$scriptid=$selectscriptresult[$j]['id'];//从这里能得到id值,是另外一个sql得到的
$temp_id='sc_'.$scriptid;
$updateidsql="update `test1` set temp_id='$temp_id' where id=$scriptid";//更新temp_id
$copyproject->query($updateidsql);
}目前记录大概有1700条,每次循环个几百次,就失败了,mysql的log中也没有什么体现。我怀疑是这个循环的效率有问题,请大家帮我看看。
我想知道用循环来做会造成mysql效率的问题吗?或者会造成mysql连接有问题吗?