20 个解决方案
#1
使用mysql4。0,使用储存过程来写入,我想这是唯一的提高效率的方法了吧
#2
通过ODBC用VC++来写直接操作数据库
#3
回答这个问题先看清环境要求:PHP+Mysql,这是单位要求,不是我能改变的。在这种环境下,请问该怎么设计与操作。
#4
在怎么优化,最终还是得使用php连接mysql后用insert来执行填加操作
所以不使用储存过程的话,效果都差不多的
至于使用obdc的话,使用的内存太大,速度也直接连接方法比起来慢,
所以不使用储存过程的话,效果都差不多的
至于使用obdc的话,使用的内存太大,速度也直接连接方法比起来慢,
#5
up
#6
php连接mysql后用insert插入,一次插入100条左右,把php.ini中超时的时间调得高一点,循环执行该页面就好了。其它没有什么办法
#7
可以用文本插入
比如##1##数据
一次可以插入5万3千条!!!
如果用*.sql只插入3万条!!
我在插入大量数据用过!!!mysql4.0.13 所得的结果
比如##1##数据
一次可以插入5万3千条!!!
如果用*.sql只插入3万条!!
我在插入大量数据用过!!!mysql4.0.13 所得的结果
#8
用php操作mysql,连续操作数据库的效率最高.
这样的话,你就可以把值连在一块一次性插入100或更多
如下:
INSERT INTO table (id, name, address) VALUES (NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),NULL, 'sdf'),(NULL, 'sdf'),......
这样的话,你就可以把值连在一块一次性插入100或更多
如下:
INSERT INTO table (id, name, address) VALUES (NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),NULL, 'sdf'),(NULL, 'sdf'),......
#9
上面的戏子正解,一条 sql 语句插上 2 万条,这样 50 条语句也没多长时间
应该是瞬间完成吧
应该是瞬间完成吧
#10
楼上的,我左右考虑了一下
难道我要写100万个(NULL,'sdf')??
如果说是100万个这个字符串的话,这个文件是多大?
我个人意见是
将这100万记录分段(比如说分开为10个块10万为一块)
我用五个页面去执行他,(当然了你如果用一个页面的话那就等吧,至少机器速度允许的情况下,我可以用一个页面的1/5时间完成,其实思想有点象flashget里的块数)
如果你能分的更精细的话,我想时间上肯定还可以有所提高(只要计算机能运算过来)
以上方法虽然说技术方面不怎么高,但是对于你要求的使用PHP操作MYSQL来说,客观上是可以提高速度
如果真的要用循环来做的话,我还是建议你使用编译语言通过MYODBC操作数据库...
毕竟编译型语言比PHP速度快的多......
难道我要写100万个(NULL,'sdf')??
如果说是100万个这个字符串的话,这个文件是多大?
我个人意见是
将这100万记录分段(比如说分开为10个块10万为一块)
我用五个页面去执行他,(当然了你如果用一个页面的话那就等吧,至少机器速度允许的情况下,我可以用一个页面的1/5时间完成,其实思想有点象flashget里的块数)
如果你能分的更精细的话,我想时间上肯定还可以有所提高(只要计算机能运算过来)
以上方法虽然说技术方面不怎么高,但是对于你要求的使用PHP操作MYSQL来说,客观上是可以提高速度
如果真的要用循环来做的话,我还是建议你使用编译语言通过MYODBC操作数据库...
毕竟编译型语言比PHP速度快的多......
#11
用javascript配合。让执行页面自动刷新。
这样,你就可以在一边睡觉直到它把数据全部插入
^_^
这样,你就可以在一边睡觉直到它把数据全部插入
^_^
#12
同意楼上,我插入过的这个,方法特笨,一次插入1000条,刷新一次页面.
晚上11点就开始,第二天9点才完.我们的服务器是特烂的那一种.:}
晚上11点就开始,第二天9点才完.我们的服务器是特烂的那一种.:}
#13
ft,这样也可以。
也是个取巧的好方法,呵呵。
弓虽
也是个取巧的好方法,呵呵。
弓虽
#14
楼主,请问一下,就是你们单位所处的服务器是不是LINUX OR UNIX,若是WINDOWS,别谈,整一个报告效率太低,还不如MSSQL,但是,如果是在UNIX环境下面,如果你只是做为初始化数据,需要100万条数据的话,你完全可以使用到UNIX下的BASE+正则表达式,用PERL是最快的,在PHP下面,也可以调用UNIX命令的,那么,你可以使用外部命令来完成,因为,使用到PHP,自身在HTTP协议中有一个就是身生命周期问题,如果你使用外部命令,将做为后台工作,不再存在自生命周期问题,当然,这个若被黑客所用,嘿嘿嘿,死定。
用文本,是最快的方法,我试过了,但是,看要在什么类型的服务器下,不是指硬件,同为MYSQL,LINUX导入数据的前20.30万数据确实很快,但是,整体性能一下子掉下来,使以后的70多万条数据变的非常之慢,若用FREEBSD,自身感觉初始速度没有LINUX快,但是即使INSERT1000万条数据也非常稳定,也就是,一个是短跑高手,一个是马家军,楼主可以自已试一下。
用文本,是最快的方法,我试过了,但是,看要在什么类型的服务器下,不是指硬件,同为MYSQL,LINUX导入数据的前20.30万数据确实很快,但是,整体性能一下子掉下来,使以后的70多万条数据变的非常之慢,若用FREEBSD,自身感觉初始速度没有LINUX快,但是即使INSERT1000万条数据也非常稳定,也就是,一个是短跑高手,一个是马家军,楼主可以自已试一下。
#15
楼主,其实可以的话,建议在PHP里调用外部命令,执行MYSQL DATABASE < FILENAME,这样来执行,MYSQLDUMP在这方面做的很不错,速度是很快,效率是很好,这点,是比POSTGRESQL要好
#16
我以前也遇见过一个类似的问题,最后分成很多个小文件才导入成功的。感觉很有些郁闷。关注着你们更好的方法。
#17
另有一问,我在本机调试程序时,提示我:Notice: Undefined variable: action in c:\program files\apache group\apache\http\admin\make_user.php on line 2
这是什么原因?
我的make_user.php :
1 <?
2 if ($action=='action'){
3 include("../dbconn.inc.php");
4 $sql="select Id from user where Name='$Name' limit 1;";
谁能帮忙查查?
这是什么原因?
我的make_user.php :
1 <?
2 if ($action=='action'){
3 include("../dbconn.inc.php");
4 $sql="select Id from user where Name='$Name' limit 1;";
谁能帮忙查查?
#18
另:我发现我们的服务器是win2000的,哎,整啥报告!是个私人老板,抠门的不行。
#19
very easy!
你需要往什么数据表,插什么数据都可以。
你需要往什么数据表,插什么数据都可以。
#20
学习
#21
#1
使用mysql4。0,使用储存过程来写入,我想这是唯一的提高效率的方法了吧
#2
通过ODBC用VC++来写直接操作数据库
#3
回答这个问题先看清环境要求:PHP+Mysql,这是单位要求,不是我能改变的。在这种环境下,请问该怎么设计与操作。
#4
在怎么优化,最终还是得使用php连接mysql后用insert来执行填加操作
所以不使用储存过程的话,效果都差不多的
至于使用obdc的话,使用的内存太大,速度也直接连接方法比起来慢,
所以不使用储存过程的话,效果都差不多的
至于使用obdc的话,使用的内存太大,速度也直接连接方法比起来慢,
#5
up
#6
php连接mysql后用insert插入,一次插入100条左右,把php.ini中超时的时间调得高一点,循环执行该页面就好了。其它没有什么办法
#7
可以用文本插入
比如##1##数据
一次可以插入5万3千条!!!
如果用*.sql只插入3万条!!
我在插入大量数据用过!!!mysql4.0.13 所得的结果
比如##1##数据
一次可以插入5万3千条!!!
如果用*.sql只插入3万条!!
我在插入大量数据用过!!!mysql4.0.13 所得的结果
#8
用php操作mysql,连续操作数据库的效率最高.
这样的话,你就可以把值连在一块一次性插入100或更多
如下:
INSERT INTO table (id, name, address) VALUES (NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),NULL, 'sdf'),(NULL, 'sdf'),......
这样的话,你就可以把值连在一块一次性插入100或更多
如下:
INSERT INTO table (id, name, address) VALUES (NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),(NULL, 'sdf'),NULL, 'sdf'),(NULL, 'sdf'),......
#9
上面的戏子正解,一条 sql 语句插上 2 万条,这样 50 条语句也没多长时间
应该是瞬间完成吧
应该是瞬间完成吧
#10
楼上的,我左右考虑了一下
难道我要写100万个(NULL,'sdf')??
如果说是100万个这个字符串的话,这个文件是多大?
我个人意见是
将这100万记录分段(比如说分开为10个块10万为一块)
我用五个页面去执行他,(当然了你如果用一个页面的话那就等吧,至少机器速度允许的情况下,我可以用一个页面的1/5时间完成,其实思想有点象flashget里的块数)
如果你能分的更精细的话,我想时间上肯定还可以有所提高(只要计算机能运算过来)
以上方法虽然说技术方面不怎么高,但是对于你要求的使用PHP操作MYSQL来说,客观上是可以提高速度
如果真的要用循环来做的话,我还是建议你使用编译语言通过MYODBC操作数据库...
毕竟编译型语言比PHP速度快的多......
难道我要写100万个(NULL,'sdf')??
如果说是100万个这个字符串的话,这个文件是多大?
我个人意见是
将这100万记录分段(比如说分开为10个块10万为一块)
我用五个页面去执行他,(当然了你如果用一个页面的话那就等吧,至少机器速度允许的情况下,我可以用一个页面的1/5时间完成,其实思想有点象flashget里的块数)
如果你能分的更精细的话,我想时间上肯定还可以有所提高(只要计算机能运算过来)
以上方法虽然说技术方面不怎么高,但是对于你要求的使用PHP操作MYSQL来说,客观上是可以提高速度
如果真的要用循环来做的话,我还是建议你使用编译语言通过MYODBC操作数据库...
毕竟编译型语言比PHP速度快的多......
#11
用javascript配合。让执行页面自动刷新。
这样,你就可以在一边睡觉直到它把数据全部插入
^_^
这样,你就可以在一边睡觉直到它把数据全部插入
^_^
#12
同意楼上,我插入过的这个,方法特笨,一次插入1000条,刷新一次页面.
晚上11点就开始,第二天9点才完.我们的服务器是特烂的那一种.:}
晚上11点就开始,第二天9点才完.我们的服务器是特烂的那一种.:}
#13
ft,这样也可以。
也是个取巧的好方法,呵呵。
弓虽
也是个取巧的好方法,呵呵。
弓虽
#14
楼主,请问一下,就是你们单位所处的服务器是不是LINUX OR UNIX,若是WINDOWS,别谈,整一个报告效率太低,还不如MSSQL,但是,如果是在UNIX环境下面,如果你只是做为初始化数据,需要100万条数据的话,你完全可以使用到UNIX下的BASE+正则表达式,用PERL是最快的,在PHP下面,也可以调用UNIX命令的,那么,你可以使用外部命令来完成,因为,使用到PHP,自身在HTTP协议中有一个就是身生命周期问题,如果你使用外部命令,将做为后台工作,不再存在自生命周期问题,当然,这个若被黑客所用,嘿嘿嘿,死定。
用文本,是最快的方法,我试过了,但是,看要在什么类型的服务器下,不是指硬件,同为MYSQL,LINUX导入数据的前20.30万数据确实很快,但是,整体性能一下子掉下来,使以后的70多万条数据变的非常之慢,若用FREEBSD,自身感觉初始速度没有LINUX快,但是即使INSERT1000万条数据也非常稳定,也就是,一个是短跑高手,一个是马家军,楼主可以自已试一下。
用文本,是最快的方法,我试过了,但是,看要在什么类型的服务器下,不是指硬件,同为MYSQL,LINUX导入数据的前20.30万数据确实很快,但是,整体性能一下子掉下来,使以后的70多万条数据变的非常之慢,若用FREEBSD,自身感觉初始速度没有LINUX快,但是即使INSERT1000万条数据也非常稳定,也就是,一个是短跑高手,一个是马家军,楼主可以自已试一下。
#15
楼主,其实可以的话,建议在PHP里调用外部命令,执行MYSQL DATABASE < FILENAME,这样来执行,MYSQLDUMP在这方面做的很不错,速度是很快,效率是很好,这点,是比POSTGRESQL要好
#16
我以前也遇见过一个类似的问题,最后分成很多个小文件才导入成功的。感觉很有些郁闷。关注着你们更好的方法。
#17
另有一问,我在本机调试程序时,提示我:Notice: Undefined variable: action in c:\program files\apache group\apache\http\admin\make_user.php on line 2
这是什么原因?
我的make_user.php :
1 <?
2 if ($action=='action'){
3 include("../dbconn.inc.php");
4 $sql="select Id from user where Name='$Name' limit 1;";
谁能帮忙查查?
这是什么原因?
我的make_user.php :
1 <?
2 if ($action=='action'){
3 include("../dbconn.inc.php");
4 $sql="select Id from user where Name='$Name' limit 1;";
谁能帮忙查查?
#18
另:我发现我们的服务器是win2000的,哎,整啥报告!是个私人老板,抠门的不行。
#19
very easy!
你需要往什么数据表,插什么数据都可以。
你需要往什么数据表,插什么数据都可以。
#20
学习