2

従業員、部門、苦情の 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 つしかなく結合されるため、パフォーマンスが向上/高速になるはずです。さらなるテーブルで。ただし、両方のクエリを実行してもパフォーマンスの違いは見られず、両方のクエリにほぼ同じ時間がかかります。

どこが間違っているのか確認して教えていただけますか?

4

4 に答える 4