Robím slabý výkon a Model.find(array_of_ids)
v mongodbe pomocou mongoidnej jazdy a ja nerozumiem prečo.
Relevantný kód:
ids = get_ids() #Get an array of 137 _ids for Topic model.
Topic.find(ids) #Find all data, but take 4 seconds to do it.
Pole _id je automaticky indexované, takže nepotrebuje žiadnu manuálnu konfiguráciu.
Prečo je to tak pomalé?
Opýtajte sa, či potrebujete viac vysvetlení, a ospravedlňujem sa za moju chudobnú angličtinu.
odpovede:
0 pre odpoveď č. 1Zdá sa, že ste už dostali riešenie.
Len chcem pridať.
Ak ids môže dosiahnuť 137, myslím, že by ste mali uložiť vzťah v zbierke tém miesto. Je to naopak. Dotaz bude
Topic.where(:id => self.topic_id)
kde sa self vzťahuje na záznam tohto modelu.
Je to vlastne has_many a relationship_to vzťah.
Mongodb schopnosť ukladať pole, neznamenáže pre mnoho (137) záznamov spojených s iným modelom môžete tento spôsob uložiť. Relačná metóda je lepšia. Jednoducho vložte niečo do poľa, ak typ údajov nesúvisí s iným modelom / kolekciou. Napríklad značka témy, ktorá by mohla byť "trendy, dospievajúci, detinský, cheesy, atď. , To je dobrá príležitosť na použitie funkcie poľa s mongodb.
V prípade, že pole obsahuje zoznamy tém, kde sú témami údaje definované v kolekcii Témy, mal byť použitý relačný model.
Len nejaký návrh, prosím, nehlasujte ma.