Migliore strategia in SQL
https://softwareengineering.stackexchange.com/questions/196890
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
Non affiliato a softwareengineering.stackexchange