Forum: Rails Germany Model.find([1,2,3,4,...]) in einem SELECT bündeln

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
975bb284d2f4e089a60481a61456e1d0?d=identicon&s=25 Ko Ko (devillo)
on 2009-01-27 13:28
Hi,

ich übergebe meiner find Methode ein großes Array von IDs, deren
zugehörige Datensätze aus der DB geladen werden sollen. Die IDs sind
nicht zwingend zusammenhängend, weshalb eine Abfrage mit LIMIT oder
OFFSET ausscheidet.

Beispiel:
ids = [41,42,51,52,61,62]
MapCell.find(ids)

funktioniert! Schaut man sich die Logfiles an, dann sieht man:
  MapCell Load (0.8ms)   SELECT * FROM `map_cells` WHERE
(`map_cells`.`id` = 41)
  MapCell Load (0.3ms)   SELECT * FROM `map_cells` WHERE
(`map_cells`.`id` = 42)
  MapCell Load (0.3ms)   SELECT * FROM `map_cells` WHERE
(`map_cells`.`id` = 51)
  MapCell Load (0.2ms)   SELECT * FROM `map_cells` WHERE
(`map_cells`.`id` = 52)
  MapCell Load (0.3ms)   SELECT * FROM `map_cells` WHERE
(`map_cells`.`id` = 61)
  MapCell Load (0.2ms)   SELECT * FROM `map_cells` WHERE
(`map_cells`.`id` = 62)

Rails führt für jede ID einen eigenen SELECT aus. Da das Array mit den
IDs locker mal 100 IDs enthalten kann, möchte ich das performanter
durchführen. Ideal wäre eine einzelne SQL-Abfrage.

Ist sowas mit Rails einfach realisierbar?

Viele Grüße,
Devillo
978ed7ca309d5495078702096f9add03?d=identicon&s=25 Thomas R. Koll (Guest)
on 2009-01-27 13:32
(Received via mailing list)
Hi,

Sicher dass du eine aktuelle Version von rails hast?
Funktioniert nämlich schon seit einiger Zeit.

ciao, tom


Am 27.01.2009 um 13:28 schrieb Ko Ko:
>
> Rails führt für jede ID einen eigenen SELECT aus. Da das Array mit den
> IDs locker mal 100 IDs enthalten kann, möchte ich das performanter
> durchführen. Ideal wäre eine einzelne SQL-Abfrage.

--
Thomas R. "TomK32" Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: tomk32@gmx.de
http://flickr.com/people/tomk32
975bb284d2f4e089a60481a61456e1d0?d=identicon&s=25 Ko Ko (devillo)
on 2009-01-27 13:34
> Sicher dass du eine aktuelle Version von rails hast?
> Funktioniert n�mlich schon seit einiger Zeit.

ruby script/about
About your application's environment
Ruby version              1.8.6 (universal-darwin9.0)
RubyGems version          1.3.1
Rails version             2.2.2
Active Record version     2.2.2
Action Pack version       2.2.2
Active Resource version   2.2.2
Action Mailer version     2.2.2
Active Support version    2.2.2
Application root          *****
Environment               development
Database adapter          mysql
Database schema version   8
975bb284d2f4e089a60481a61456e1d0?d=identicon&s=25 Ko Ko (devillo)
on 2009-01-27 13:59
Ko Ko wrote:
>> Sicher dass du eine aktuelle Version von rails hast?
>> Funktioniert n�mlich schon seit einiger Zeit.
>
> ruby script/about
> About your application's environment
> Ruby version              1.8.6 (universal-darwin9.0)
> RubyGems version          1.3.1
> Rails version             2.2.2

Mein Fehler,
geht wirklich schon :)

Thema erledigt!
This topic is locked and can not be replied to.