I was excited to try AR-extensions (http://www.continuousthinking.com/
tags/arext) to do a bunch of data importing that had been really slow.
But then I was disappointed to see that it actually didn’t help and
wondered if I was missing something.
I’m finding that it actually goes faster to do
batch.each{|l| Quote.create(:date => l[0], :company_id => l
[1], :daily_return => l[2])}
than to do
Quote.import([:date, :company_id, :daily_return], batch)
In the script/server log when I do Quote.import I get an INSERT
statement for each line of the input, like this:
SQL (0.005698) INSERT INTO
“quotes” (“date”,“company_id”,“daily_return”) VALUES(‘20040803’,
3210,'0.002108
‘)
SQL (0.008398) INSERT INTO
“quotes” (“date”,“company_id”,“daily_return”) VALUES(‘20040804’,
3210,’-0.004628
')
and when I do a bunch of iterated #create calls I get statements like
this:
Quote Create (0.000774) INSERT INTO “quotes” (“daily_return”,
“price”, “date”, “company_id”, “abnormal_return”, “volume”) VALUES
(0.020922, NULL, ‘2008-11-28’, 428, NULL, NULL)
Quote Create (0.000689) INSERT INTO “quotes” (“daily_return”,
“price”, “date”, “company_id”, “abnormal_return”, “volume”) VALUES
(-0.026083, NULL, ‘2008-12-01’, 428, NULL, NULL)
So the import method is doing the same number of SQL INSERT
statements; here they happen to be faster although I’m not sure why
that is. I expected the import method to speed things up by combining
the commits into one statement or something.
Is this the expected behavior?
Thanks,
Andy