Quelle est la «meilleure pratique» générale pour ce type de fonctionnalité.Optimisation de la requête Mysql
J'ai un tableau d'utilisateurs un tableau des sondages et un tableau des réponses au sondage sur un site Web. Je veux charger une page qui charge un sondage auquel un utilisateur n'a pas encore répondu.
Quelle est la façon la plus efficace et la meilleure de s'y prendre?
choses que j'ai essayé qui semble lente/pas optimale:
Une requête avec emboîtés en utilisant NOT IN sélectionne
SELECT p.id
FROM poll p
WHERE p.id NOT IN (
SELECT r.pollID
FROM responses r
WHERE r.username = 'someuser'
)
Une requête qui utilise à gauche rejoint
LEFT JOIN responses ON (polls.id = responses.pollID
AND responses.username = 'someuser')
WHERE
responses.username IS NULL
deux ces solutions semblent très peu évoluer.
Autres suggestions? Ouvert à tout ce qui sort de la boîte. (I.E. solutions qui ne sont pas limitées à seulement différents types de requêtes mysql)
avez-vous des indices appropriés sur vos tables? – longneck
Utilisez la commande EXPLAIN avant votre requête pour voir comment MySQL décompose la requête –