従業員、部門、苦情の 3 つのテーブルがあります。Employees テーブルには、100 万を超えるレコードがあります。従業員、その部署、および彼/彼女が提起した苦情の詳細を見つける必要があります。
結果を見つけるために、次の 2 つのクエリを考えることができます。
1. 最初にレコードをフィルタリングして、データが必要な従業員のレコードのみを取得します。
SELECT * FROM (SELECT * FROM Employees WHERE EmployeeID= @EmployeeID) Emp
LEFT JOIN Department Dpt ON Emp.EmployeeID= Dpt.EmployeeID
LEFT JOIN Grievance Grv ON Emp.EmployeeID= Grv.EmployeeID;
2. 最初に参加:
SELECT * FROM Employees Emp
LEFT JOIN Department Dpt ON Emp.EmployeeID= Dpt.EmployeeID
LEFT JOIN Grievance Grv ON Emp.EmployeeID= Grv.EmployeeID
WHERE EmployeeID= @EmployeeID);
FROM>INNER JOIN>OUTER JOIN>WHERE>....SELECT で始まる SQL 論理処理順序を考慮すると、最初のクエリは、内部クエリからのレコードが 1 つしかなく結合されるため、パフォーマンスが向上/高速になるはずです。さらなるテーブルで。ただし、両方のクエリを実行してもパフォーマンスの違いは見られず、両方のクエリにほぼ同じ時間がかかります。
どこが間違っているのか確認して教えていただけますか?