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