Je veux accélérer ma requête, je n'ai fait aucun index sur mes tables.Une gemme agit comme `balle` qui peut détecter automatiquement les performances de votre requête et vous suggérer d'ajouter un index sur certaines colonnes spécifiques
Mais je n'ai aucune idée où je devrais mettre l'index au bon endroit.
Contrôleur
def search
@rooms = Room.includes(:hotel, :skus).where(id: available_rooms_ids)
end
constructeur JSON
Mon constructeur JSON est un peu complexe.
Les enfants doivent extraire leurs données parentes.
Le brevet doit également récupérer ses données enfants.
Leur chaîne relation ressemble
- Hôtel has_many Chambre
- Chambre has_many RoomSku
- RoomSku has_many STOCK
CODE
json.array!(@rooms) do |item|
json.merge! item.attributes
json.hotel item.hotel
json.room_skus do
json.array! item.skus do |sku|
next if (sku.date < @check_in_time.to_date or sku.date > @check_out_time.to_date)
json.merge! sku.attributes.merge({stock:sku.stock})
end
end
json.img_src_url item.hotel.images.last.src.url
end
end