我用C语言把很多数据一条一条写进数据库速度太慢了,有没有什么方法可以快点啊,用的数据库是Mysql,300万条数据,一条一条insert,我等了十分钟只插进去10万条。我写的语句如下:
sprintf(szSqlText,"insert into table1 (number,word1,word2,num) values(%d,%d,%d,1)",pt,a[0],a[1]);
mysql_query(&connect, szSqlText);
就是先给字符串赋值,然后插入数据库,一条一条写300万次,我等了10分钟才插入了5万条,请问各位有没有快的方法,我这样插数据是不是会产生很多不必要的损耗。
sprintf(szSqlText,"insert into table1 (number,word1,word2,num) values(%d,%d,%d,1)",pt,a[0],a[1]);
mysql_query(&connect, szSqlText);
就是先给字符串赋值,然后插入数据库,一条一条写300万次,我等了10分钟才插入了5万条,请问各位有没有快的方法,我这样插数据是不是会产生很多不必要的损耗。
解决方案 »
- 帮忙解决mysql存储过程的缓存问题
- 求一个MYSQL查询语句
- MsMql用DTS导出数据到MySql问题
- 把vfp中的表导入到mysql
- 在C中获取Mysql存储过程的数据集
- java存图片进入Mysql数据库异常,请高手指点下,到底哪里错了。
- 在 postgresql 中建立数据库,出现如下错误
- php和mysql怎么做留言本的分页程序?
- 请教在php,insert mysql添加一个网址 错误(双引号问题)
- 【求助】使用python链接mysql时报错You have an error in your SQL syntax; check the manual tha
- 如何将mysql中表以这种格式导出来 ??
- rsmd.getColumnName()获得字段列名变乱码??
另外可以把数据写入到文本文件,然后用load data infile来一次性加载。 load data 的速度远比INSERT快很多。有些测试结果显示可以快20倍。
2.批量insert
3.去不必要的index
把300万数据用load到表中,是小意思。
bulk_insert_buffer_size = 64M
concurrent_insert = 2
delayed_queue_size = 3000
delayed_insert_limit = 200
delayed_insert_timeout = 400
max_delayed_threads = 30sprintf(szSqlText,"insert delayed into table1 (number,word1,word2,num) values(%d,%d,%d,1)",pt,a[0],a[1]); 试试,这样应该会好点!
INSERT INTO `Table` VALUES (X,X),(X,X),...(X,X');的方式比你所用的方法要快一些。