Quelle est la différence entre les requêtes ci-dessous
Select E.EmployeeCode,E.Name,D.DepartmentCode,D.DepartmentName From Employee E inner join Department D on D.DepartmentID=E.DepartmentID Where e.EmployeeType='Developer'
Contre
Select E.EmployeeCode,E.Name,D.DepartmentCode,D.DepartmentName From Employee E inner join Department D on D.DepartmentID=E.DepartmentID And e.EmployeeType='Developer'
Je request en termes de performance. Comment ci-dessus requête performe avec d'énormes données dans les arrays
Pour une INNER JOIN
il n'y a pas de différence. Le plan d'exécution pour chaque requête est identique.
Le premier plan est pour la requête:
Select E.EmployeeCode,E.Name,D.DepartmentCode,D.DepartmentName From Employee E inner join Department D on D.DepartmentID=E.DepartmentID Where e.EmployeeType='Developer'
Et le deuxième plan est pour la requête:
Select E.EmployeeCode,E.Name,D.DepartmentCode,D.DepartmentName From Employee E inner join Department D on D.DepartmentID=E.DepartmentID And e.EmployeeType='Developer'
Par conséquent, la performance de l'une ou l'autre requête sera la même.
Avec des données "énormes", vous pouvez avoir besoin d'index sur les colonnes que vous utilisez dans les conditions WHERE
et JOIN
, en fonction de l'unicité des valeurs dans ces colonnes. Dans les plans de requête de la capture d'écran, vous pouvez voir que SQL Server effectue une parsing de table, vous pouvez donc vouloir changer cela.