Wie kann man feststellen, was effektiver ist: UNTERSCHEIDBAR oder WO GIBT ES?

Zum Beispiel habe ich 3 Tabellen:user, group undpermissionund zwei viele Beziehungen zwischen ihnen:user_groups undgroup_permissions.

Ich muss alle Berechtigungen eines bestimmten Benutzers ohne Wiederholungen auswählen. Jedes Mal, wenn ich auf ein ähnliches Problem stoße, kann ich nicht feststellen, welche Version einer Abfrage besser ist:

SELECT permisson_id FROM group_permission WHERE EXISTS(
    SELECT 1 FROM user_groups 
        WHERE user_groups.user_id = 42 
          AND user_groups.group_id = group_permission.group_id
)

SELECT DISTINCT permisson_id FROM group_permission
    INNER JOIN user_groups ON user_groups.user_id = 42 
           AND user_groups.group_id = group_permission.group_id 

Ich habe genug Erfahrung, um daraus Schlussfolgerungen zu ziehen. Die erste Abfrage hat eine Unterabfrage, aber meine Erfahrungen haben gezeigt, dass die erste Abfrage schneller ist. Möglicherweise aufgrund der großen Anzahl gefilterter Berechtigungen im Ergebnis.

Was würden Sie in dieser Situation tun? Warum? Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage