我想搞一个从130 0000 0000 到 159 9999 9999的数据库。运行了一夜,才到132 5999 9999了。太慢了吧。 set_time_limit(0); $m='';
$pdo = new PDO("sqlite:t.db");
for($a=3;$a<=5;$a++){
for($b=0;$b<=9;$b++){
for($c=0;$c<=9;$c++){
for($d=0;$d<=9;$d++){
for($e=0;$e<=9;$e++){
$pdo->beginTransaction();
for($f=0;$f<=9;$f++){
for($g=0;$g<=9;$g++){
for($x=0;$x<=9;$x++){
for($y=0;$y<=9;$y++){
for($z=0;$z<=9;$z++){
$m = '1'.$a.$b.$c.$d.$e.$f.$g.$x.$y.$z;
$n = md5($m);
$sql = "insert into mobile(m,c)values('".$m."','".$n."')";
$pdo->prepare($sql)->execute();
}
}
}
}
}
$pdo->commit();
}
}
}
}
}
echo $i.'<hr>access';各路高手,请支个招,让效率顶上去。
$pdo = new PDO("sqlite:t.db");
for($a=3;$a<=5;$a++){
for($b=0;$b<=9;$b++){
for($c=0;$c<=9;$c++){
for($d=0;$d<=9;$d++){
for($e=0;$e<=9;$e++){
$pdo->beginTransaction();
for($f=0;$f<=9;$f++){
for($g=0;$g<=9;$g++){
for($x=0;$x<=9;$x++){
for($y=0;$y<=9;$y++){
for($z=0;$z<=9;$z++){
$m = '1'.$a.$b.$c.$d.$e.$f.$g.$x.$y.$z;
$n = md5($m);
$sql = "insert into mobile(m,c)values('".$m."','".$n."')";
$pdo->prepare($sql)->execute();
}
}
}
}
}
$pdo->commit();
}
}
}
}
}
echo $i.'<hr>access';各路高手,请支个招,让效率顶上去。
解决方案 »
- 第一次写PHP,做了一个小系统,感觉还不错,大家看看
- 寻求:实时显示的解决方案!
- php5+Apache2+WinXp安装的问题。
- 在FTP中怎么不能删除文件?请教
- 多个域名如何处理一个cookie
- 在网页中怎样内嵌Media Player Classic 播放mpg2的视频
- 急急!!!!!!!各位大虾:我怎么在单击一按钮提交一个表单的同时关闭前的页面?
- 在上传文件时如何在javascript中获得浏览的文件名称? 急,急!!
- php 字符串截取问题
- 高手进,curl post 数据登录成功后生成一个cookie值,带着这个值继续访问,服务器会返回一个不同的cookie值,请问怎么获取这个返回值
- linux下 安装php的问题 高分求解
- PHP文件上传 的备份文件的超连接
0~99999999 循环三次就行了,转字符串,补齐0后加上"13"、"14"、"15"前缀即可不要每次循环都prepare,你这样还要prepare做啥?
prepare一次,然后execute的时候传递参数即可
$stm = $pdo->prepare("insert into mobile(m,c)values(?,?)";);
for ()
{
....
$stm->execute(array($m,$n));
把你的sql语句改为:
$sql = "insert into mobile(m,c) values('".$m."','".$n."'),values('".$m."','".$n."'),values('".$m."','".$n."'),values('".$m."','".$n."')";
这种形式的,也就是一次批量插入。也可以提高点效率
<?php
$step=100;
$x=0;
$value="";
$sql = "insert into mobile(m,c)";
for($i=13;$i<=15;$i++){
for($z=0;$z<=999999999;$z++){
$value .= (empty($value)?" ":",")."values('".$m."','".$n."')";
$x++;
if($x>=$step){
mysql_query($sql.$value);
$x=0;$value="";
}
}
}
?>
不过要想再提高效率,就最好用存储过程来做。
减少php与mysql之间的数据传输量。
存储过程也是mysql localhost执行,php只是调用。
你插入的似乎是手机号码,不明白为什么要这样做,说说需求,或许有更好的解决办法
prepare一次,然后execute的时候传递参数即可这样可以提高效率吗???
继续讨论!
上次试过。
只需要插入后9位, 一共10亿条数据.
3个小时不到.
分 13,14,15 3个2位前缀, 3次插入
总计大约8个小时.btw:楼主超级深的循环可以省省 ⊙﹏⊙‖