У меня есть таблица с именем Staging
, в которую я помещаю все данные из электронной таблицы Excel, получаю из нее идентификационный номер, просматривая существующую модель / таблицу, а затем сравниваю ее с текущей базой данных, которая SQL Server 2008.
Мой код выглядит следующим образом:
def compare
require 'rubygems'
require 'spreadsheet'
require 'set'
Spreadsheet.client_encoding = 'UTF-8'
file_full_path = File.expand_path(File.join(File.dirname(__FILE__), "../../SISlist.xls"))
book = Spreadsheet.open(file_full_path) #Select excel file
sheet = book.worksheet 0 #Select 1st worksheet
app,server,env = 0
for i in 1..500
row = sheet.row(i)
if row[0].to_s != "" # Makes sure no empty cells are saved
row.each do |t|
app = App.find_by_name(row[0].to_s)
server = Server.find_by_name(row[2].to_s)
env = Environment.find_by_code(row[3].to_s)
end
Staging.create(:app => app.id, :server => server.id, :environment => env.id)
end
end
end
Проблема, с которой я столкнулся сейчас, заключается в том, что этот метод занимает очень много времени (почти 20 секунд), тогда как все другие мои методы подобного рода не занимают так много времени.
Любой способ ускорить этот процесс или, возможно, мой рабочий процесс неверен, и, следовательно, вся архитектура неверна?
Требуется помощь