gpt4 book ai didi

mysql - 我该如何优化这个 ruby​​ 脚本?

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:08 25 4
gpt4 key购买 nike

我有这段代码,但需要很长时间。

当我使用 -r profile 时,它​​表明大部分时间似乎都转到 mysql...我怎样才能加快速度? MySQL 批量插入?

探查器输出在这里:http://pastebin.com/fH51ZeEB

代码:

#!/usr/bin/env ruby

require 'mysql'
require 'open-uri'
require 'nokogiri'
begin
i=0
src = Mysql.new 'localhost', 'me', 'pass', 'db'
rs = src.query("SELECT * FROM npanxx")
rs.each_hash do |row|
doc = Nokogiri::XML(open("http://localcallingguide.com/xmllocalprefix.php?npa="<< row["npa"].to_s << "&nxx=" << row["nxx"].to_s << "&dir=1"))
lca = Hash.new
doc.xpath("//prefix/npa | //prefix/nxx | //prefix/exch").each do |prefix|
if !lca.has_key? "npa"
lca["npa"] = prefix.content
next
end
if !lca.has_key? "nxx"
lca["nxx"] = prefix.content
next
end
if !lca.has_key? "exch"
lca["exch"] = prefix.content
src.query("INSERT INTO npanxxlca (npa,nxx,tnpa,tnxx,texch) VALUES (#{row['npa']}, #{row['nxx']}, #{lca['npa']}, #{lca['nxx']}, #{lca['exch']})")
lca = Hash.new
end
end
puts (i+=1).to_s << "- #{row['npa']}, #{row['nxx']}\n"
end
rescue Mysql::Error => e
puts e.errno
puts e.error
ensure
src.close if src
end

最佳答案

您可以尝试插入多行,我认为这是瓶颈。首先,您可以将值保存在数组中,当数组足够大时,然后插入多行,就像这样。

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

how-to-insert-multiple-records-into-database

关于mysql - 我该如何优化这个 ruby​​ 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32129678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com