返回信息流在本地使用PHP+Mysql,想在MySql里面查一千万条数据,表的结构很简单:
create table user_with_index (
id int(10) not null primary key,
name varchar(10) not null);
mysql> select now() , id , name from user_with_index order by id desc limit 1;
+---------------------+---------+---------------+
| now() | id | name |
+---------------------+---------+---------------+
| 2014-05-14 18:01:47 | 3612267 | name_ 3607182 | 我在执行这条语句之前,已经查了一些数据了。
+---------------------+---------+---------------+
1 row in set (0.00 sec)
昨天下午我开始插入的,怎么现在还没有插完啊?
<?php
set_time_limit(0);
$mysql = mysqli_connect("localhost","root", "123456","test") or die("Error" . mysqli_error($mysql));
set_time_limit(0);
$start = microtime(true);
for ($i=1; $i<1000*1000*10;$i++)
{
$query = 'INSERT INTO `user_with_index` (name) values ("name_ ' . $i . '")';
$ret = mysqli_query($mysql,$query);
echo mysqli_error($mysql); //我加入了这一天,应该也不会有影响吧?
if (!$ret)
{
var_dump($ret);
mysqli_error($mysql);
exit;
}
}
$end = (microtime(true) - $start);
mysqli_close($mysql);
echo "elapsed time: $end";
exit;
?>
另外,大家有哪些方法提高插入数据速度呢?
这是一条镜像帖。来源:北邮人论坛 / www-technology / #25622同步于 2014/5/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
PHP往Mysql 插入1千万数据,有这么慢么?都一天了。
youziboy
2014/5/14镜像同步27 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
应该是没有死掉吧。
我执行 select now() , id , name from user_with_index order by id desc limit 1;
id 结果都是递增的。。。
试试批量插入?
http://stackoverflow.com/questions/5526917/how-to-do-a-batch-insert-in-mysql
这么大的量。
拼好sql,用mysql客户端,source命令执行。php下可以用system调用
mysql单表的记录数太大了性能会下降比较厉害,你监控下速度就会发现开始插入很快,后来越来越慢。
最好分下表,单表控制在几百万的水平
请问如何监控速度啊?
【 在 wp 的大作中提到: 】
: 这么大的量。
: 拼好sql,用mysql客户端,source命令执行。php下可以用system调用
: mysql单表的记录数太大了性能会下降比较厉害,你监控下速度就会发现开始插入很快,后来越来越慢。
: ...................
你这样得执行一千万次insert,性能会很差的,对于比较大的数据量,最好用load。这里有load和insert性能比较,你看看http://www.itpub.net/thread-510339-1-1.html