J'ai une table d'amis sur un réseau de type social Je construis avec cette structure:meilleure table « ami » MySql pour la performance
uid binary(16)
memberid int
friendid int
datefriended datetime
isactive bool
De cette façon, j'ai des relations et d'autres données stockées dans une seule table. Mais dis-moi que j'ai besoin de tous mes amis, que je sois l'ami (membre) ou que je sois l'ami (ami), alors j'ai besoin d'obtenir les noms des utilisateurs de la table des membres. La requête est la suivante:
SELECT m.name FROM members m
INNER JOIN friends f on m.memberid = f.friendid
WHERE f.memberid = 1
UNION ALL
SELECT m.name from members m
INNER JOIN friends f on m.memberid = f.memberid
WHERE f.friendid = 1
Ce me semble que cela pourrait être un appel à forte intensité de ressources à la DB si vous avez beaucoup d'utilisateurs et amis tirant ces données. Je sais qu'il y a la possibilité d'avoir une paire d'entrées pour chaque relation d'ami mais j'essaye de le faire en une fois. Avez-vous des idées sur la façon d'améliorer les structures de requête ou de table pour améliorer les performances. Ou peut-être que ce ne sera pas aussi mauvais que je le prévois?
Assurez-vous que vous avez des index sur 'friends.memberid', 'friends.friendid' et' members.memberid'. – eggyal
Bon appel eggyal – Naterade