MySQL-Rückgabe von Ergebnissen aus einer Tabelle, basierend auf Daten in einer anderen Tabelle

Vor dem eintauchen in das Problem, zuerst erkläre ich die situation. Ich habe zwei Tabellen wie der folgenden:

USERS TABLE
user_id
username
firstName
lastName

GROUPS TABLE
user_id
group_id

Ich abrufen möchten, alle Anwender, die erste name LIKE '%foo%' und wer ist ein Teil einer Gruppe mit group_id = 'givengid'

So, die Abfrage würde wie so etwas wie dieses:

SELECT user_id FROM users WHERE firstName LIKE '%foo'"

Kann ich eine benutzerdefinierte sql-Funktion wie ismember(user_id, group_id), das gibt 1 zurück, wenn der Benutzer ist ein Teil der Gruppe und 0, wenn Sie nicht sind, und diese in der WHERE-Klausel in der oben genannten select-Anweisung. Dies bedeutet jedoch, dass für jeden Benutzer, der erste name, der den Kriterien entspricht, einer anderen Abfrage muss ausgeführt werden, durch Tausende von andere Datensätze zu finden eine mögliche übereinstimmung für eine Gruppe Eintrag.

Den Benutzern und Gruppen Tabelle werden jeweils mehrere hunderttausend Datensätze. Ist es mehr die herkömmlichen zu verwenden, die Benutzer-definierte Funktion Ansatz oder führen Sie eine Abfrage mithilfe der UNION-Anweisung? Wenn das Konzept der UNION ist das beste, was wäre die Abfrage mit der union-Anweisung Aussehen?

Natürlich werde ich ausführen von benchmarks, aber ich will einfach nur, um einige Perspektive auf die möglichen Lösungen für diese situation und was ist in der Regel die meisten effektiv/effizient.

InformationsquelleAutor user396404 | 2010-09-21
Schreibe einen Kommentar