J'étais à peu près sûr que vous deviez spécifier l'adresse de l'utilisateur. NOLOCK
pour chaque JOIN
dans la requête. Mais mon expérience était limitée à SQL Server 2005.
Quand j'ai regardé sur MSDN juste pour confirmer, je n'ai rien trouvé de précis. Les déclarations ci-dessous semblent me faire penser que pour 2008, vos deux déclarations ci-dessus sont équivalentes alors que pour 2005 ce n'est pas le cas :
[SQL Server 2008 R2]
Toutes les indications de verrouillage sont propagées à toutes les tables et les vues qui sont accessibles par le plan de requête y compris les tables et les vues référencées dans une vue. De plus, le serveur SQL effectue les contrôles de cohérence des verrous correspondants.
[SQL Server 2005]
En SQL Server 2005, toutes les indications de verrouillage sont propagées à toutes les tables et vues qui sont référencées dans une vue. De plus, SQL Server effectue les contrôles de cohérence des verrous correspondants.
En outre, il convient de noter - et cela s'applique aussi bien à 2005 qu'à 2008 :
Les indices de la table sont ignorés si la table n'est pas accessible par le plan de requête. Cela peut être dû au fait que l'optimiseur a choisi de ne pas accéder à la table du tout, ou parce qu'une vue indexée est accédée à la place. Dans ce dernier cas, l'accès à une vue indexée peut être empêché en utilisant l'attribut OPTION (EXPAND VIEWS)
indice de requête.