Domanda

Di recente, un collega mi ha detto che non era consigliabile prendere condizioni nel Unisciti alle clausole. Invece ha suggerito di fare condizioni nel dove la clausola. Mi ha detto che il motore SQL era ottimizzato per questo modo.

Ecco un semplice esempio per illustrare la mia domanda. In questo caso, penso che farebbe qualsiasi differenza.

Quale strategia è la migliore? E perché?

Supponiamo di avere un parametro nammed @user_id.

Prima strategia

SELECT      role.name
FROM        user_role
INNER JOIN  user ON user_role.user_id = user.id AND
                    user_role.user_id = @user_id
INNER JOIN  role ON user_role.role_id = role.id

Seconda strategia

SELECT      role.name
FROM        user_role
INNER JOIN  user ON user_role.user_id = user.id
INNER JOIN  role ON user_role.role_id = role.id
WHERE       user.id = @user_id

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top