我是在页面里循环等到这四万条记录,然后想把这四万条记录插入到一个表里面去,可是效率好低,请大家帮帮忙,小弟万分感谢!最好是罗列出代码,用存储过程也行。
其实我这里所做的就是从会员表中提取四万条记录出来,然后根据不同的会员,构建不同的邮件内容,最后把这四万封邮件插入到一个表里面去。谢谢
13 个解决方案
#1
帮你顶一下
效率的问题我也不太懂,难道这就是垃圾邮件的实现方法?
效率的问题我也不太懂,难道这就是垃圾邮件的实现方法?
#2
你那样干不死机就万幸了.你可以考虑分页查询,虽然本质上没变.可是机器的负担却小了很多,进而也就能提高效率了.另外在设置一下COMMAND对象向数据库提交记录的条数(我不知道该怎样描述).默认是1条一发送.如果仅仅是从一个数据表到另一个数据表那就直接用存储过程吧.不知道你的"邮件"是不是仅仅称呼不一样.这东西做起来其实很容易,但是真要是表达清楚,就比较费劲了.还有就是你不会连存储过程都不会用吧
#3
尽量插入一个就提交一个,或者100个提交一次,只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:
COMMIT所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述3种资源中的内部花费
(译者按: 在使用COMMIT时必须要注意到事务的完整性,现实中效率和事务完整性往往是鱼和熊掌不可得兼)
COMMIT所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述3种资源中的内部花费
(译者按: 在使用COMMIT时必须要注意到事务的完整性,现实中效率和事务完整性往往是鱼和熊掌不可得兼)
#4
如果经常要插4万条,用网页代码实现有点太不可取了
建议使用异步方式,具体可以看看petshop4的设计模式
http://ityup.com/showtopic-5.html利用多线程与异步处理方式
如果不经常要插入,只是偶尔插入,为什么不直接写sql语句,做成作业运行呢?
建议使用异步方式,具体可以看看petshop4的设计模式
http://ityup.com/showtopic-5.html利用多线程与异步处理方式
如果不经常要插入,只是偶尔插入,为什么不直接写sql语句,做成作业运行呢?
#5
为什么一定要凑够4w才能进行插入了?
#6
这样本来就会导致效率低下
#7
....帮顶一下..
#8
可以一次构造4W语句一次执行
#9
◎可以一次构造4W语句一次执行
想象,构造4w个语句总得花费事件,然后执行一次。。。。。。
想象,构造4w个语句总得花费事件,然后执行一次。。。。。。
#10
存储过程会写,但是存储过程是一个人就执行一次了,有没有谁有效率比较高的代码啊,能否给出一下,谢谢大家了!大家帮顶一下啊。
#11
帮顶一下
#12
上面的人不是说了,可以考虑分批(每批的数据量不能太大,比如你说的4w条)
另外再考虑下使用多线程
另外再考虑下使用多线程
#13
ding.......
#1
帮你顶一下
效率的问题我也不太懂,难道这就是垃圾邮件的实现方法?
效率的问题我也不太懂,难道这就是垃圾邮件的实现方法?
#2
你那样干不死机就万幸了.你可以考虑分页查询,虽然本质上没变.可是机器的负担却小了很多,进而也就能提高效率了.另外在设置一下COMMAND对象向数据库提交记录的条数(我不知道该怎样描述).默认是1条一发送.如果仅仅是从一个数据表到另一个数据表那就直接用存储过程吧.不知道你的"邮件"是不是仅仅称呼不一样.这东西做起来其实很容易,但是真要是表达清楚,就比较费劲了.还有就是你不会连存储过程都不会用吧
#3
尽量插入一个就提交一个,或者100个提交一次,只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:
COMMIT所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述3种资源中的内部花费
(译者按: 在使用COMMIT时必须要注意到事务的完整性,现实中效率和事务完整性往往是鱼和熊掌不可得兼)
COMMIT所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述3种资源中的内部花费
(译者按: 在使用COMMIT时必须要注意到事务的完整性,现实中效率和事务完整性往往是鱼和熊掌不可得兼)
#4
如果经常要插4万条,用网页代码实现有点太不可取了
建议使用异步方式,具体可以看看petshop4的设计模式
http://ityup.com/showtopic-5.html利用多线程与异步处理方式
如果不经常要插入,只是偶尔插入,为什么不直接写sql语句,做成作业运行呢?
建议使用异步方式,具体可以看看petshop4的设计模式
http://ityup.com/showtopic-5.html利用多线程与异步处理方式
如果不经常要插入,只是偶尔插入,为什么不直接写sql语句,做成作业运行呢?
#5
为什么一定要凑够4w才能进行插入了?
#6
这样本来就会导致效率低下
#7
....帮顶一下..
#8
可以一次构造4W语句一次执行
#9
◎可以一次构造4W语句一次执行
想象,构造4w个语句总得花费事件,然后执行一次。。。。。。
想象,构造4w个语句总得花费事件,然后执行一次。。。。。。
#10
存储过程会写,但是存储过程是一个人就执行一次了,有没有谁有效率比较高的代码啊,能否给出一下,谢谢大家了!大家帮顶一下啊。
#11
帮顶一下
#12
上面的人不是说了,可以考虑分批(每批的数据量不能太大,比如你说的4w条)
另外再考虑下使用多线程
另外再考虑下使用多线程
#13
ding.......