This project is archived and is in readonly mode.

#906 ✓resolved
Bertg

Better query for ASSOCIATION_ids

Reported by Bertg | August 26th, 2008 @ 10:58 AM

For has_many relations Imagine we have 2 models: Cart and Item. Cart has many Items.

If we execute the following statement


Cart.first.item_ids

we get the following query


SELECT * FROM `items` WHERE (`items`.cart_id = 1)

This could by retrieving only an array, and not the objects.


SELECT `items`.id FROM `items` WHERE (`items`.cart_id = 1)

For has_many :through relations Imagine 3 models: User, Membership, Account

The User has many accounts trough membership and vice versa. We define the fitted relations and Execute the following query


User.first.account_ids

This will create the following query


SELECT `accounts`.* FROM `accounts` INNER JOIN memberships ON accounts.id = memberships.account_id WHERE ((`memberships`.user_id = 1))

While the following query would be a lot more efficient (only retrieving an array, not the objects):


SELECT `memberships`.account_id FROM memberships WHERE ((`memberships`.user_id = 1))

What do you think?

Comments and changes to this ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2 style="font-size: 14px">Tickets have moved to Github</h2>

The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>

Referenced by

Pages