15 のカテゴリがあり、各カテゴリには 6 つのサブカテゴリがあり、最新の購入日に基づいて各サブカテゴリから 3 つのアイテムを見つける必要があるアイテム テーブルがあるとします。
category 1 ---> level 1 ---> 3 items with latest date
category 1 ---> level 2 ---> 3 items with latest date
...
...
...
category 15 ---> level 5 ---> 3 items with latest date
category 15 ---> level 6 ---> 3 items with latest date
私が試してみました
@categories.each do |value|
@sub-categories.each do |value1|
array = Item.find(:all, :conditions => ["customer_id IN (?) AND category_id = ? AND sub-category_id = ?", @customer, value.id, value1.id], :order => 'created_at DESC', :limit => 3)
array.each do |value2|
@latest_item_of_each_customer << value2
end
end
end
これを15カテゴリ×6サブカテゴリで90回繰り返すので、かなり時間がかかります。効率的なクエリで時間を短縮する方法を教えてください。