J'ai commencé à utiliser query-analyzer et il m'avertit des requêtes identiques.Comment réduire le nombre de requêtes identiques lors de la récupération d'enregistrements dans le modèle
Pour le contexte, je chargeais 25 "messages" sur la page, et l'utilisateur actuel peut "étoile" un message:
0.018s 25 requêtes identiques
SELECT SQL_NO_CACHE N AS one FROM 'stars' WHERE 'stars'.'post_id' = N AND 'stars'.'user_id' = N LIMIT N
Cette est la méthode dans le modèle de l'utilisateur:
def has_starred_post?(post)
return false if post.nil?
Star.where(post_id: post.id, user_id: self.id).exists?
end
Comment puis-je satisfaire à cet avertissement en réduisant le nombre de f requêtes?
Mise à jour:
par Taryn pointe de l'Est, je mis à jour la méthode modèle User
à:
def has_starred_post?(post)
return false if post.nil?
self.stars.where(post_id: post.id).exists?
# OR post.stars.where(:user_id => self.id).exists?
end
Bien que cela me permet d'associer/cache les étoiles appartenant à l'utilisateur, je reste doit utiliser where
pour vérifier si l'une de ces étoiles appartient à la poste. Droite?
Salut Taryn Merci pour votre réponse. J'ai mis à jour ma question avec vos commentaires, mais j'ai encore une autre question si vous avez le temps. Merci! –
@JodyHeavener une fois qu'une réponse a été reçue, il n'est pas considéré comme sportif de changer la question. – e4c5
Mais la question est la même? –