Ich habe zwei Tabellen: "Filme" und "Benutzer". Zwischen diesen gibt es eine n: m-Beziehung, die beschreibt, welche Filme ein Benutzer gesehen hat. Dies ist mit einer Tabelle 'gesehen' beschrieben Nun möchte ich für einen bestimmten Benutzer alle Filme herausfinden, die er nicht gesehen hat. Meine aktuelle Lösung ist wie folgt:MySQL: Finden von Zeilen, die nicht in einer Beziehung teilnehmen
SELECT *
FROM movies
WHERE movies.id NOT IN (
SELECT seen.movie_id
FROM seen
WHERE seen.user_id=123
)
Dies funktioniert gut, aber scheint nicht sehr gut zu skalieren. Gibt es einen besseren Ansatz dafür?
Wenn es nicht gut skaliert, ist Ihre Indizierung nicht effektiv. Was sind deine Indizes? – dkretz
> Das funktioniert gut, scheint aber nicht sehr gut zu skalieren. Gibt es einen besseren Ansatz dafür? Haben Sie EXPLAIN für diese Abfrage versucht? – VolkerK