Wiem, że dobrą praktyką programowania jest dodanie warunków filtru do klauzuli WHERE kwerendy, aby zminimalizować liczbę wierszy zwracanych w łączeniach, ale kiedy zdecydować, czy powinniśmy dodać filtr w WHERE zamiast FROM? Na przykład:Dodawanie filtra w GDZIE kontra OD
SELECT a.ColA, a.ColB, a.ColC, b.ColD, b.ColE
FROM TblA a INNER JOIN TblB b
On a.ColA = b.ColD
AND a.ColA = 'X'
AND a.ColB = 'Y'
WHERE b.ColD = 'ABC'
W tym zapytaniu co jeśli dodałem b.ColD w I klauzuli zamiast Gdzie? Czy to nie sprawi, że zapytanie stanie się bardziej wydajne? Wiem, że wyniki mogą się różnić w obu podejściach, ale nie wiem dlaczego?
Dzięki.
sądząc po tagu tsql, używasz SQL Server. Studio zarządzania ma możliwość pokazania planu wykonania zapytania, dzięki czemu można porównać różnice obu wersji. Moim zdaniem jest to, że nie będzie dużej różnicy. –
To nie jest duplikat: OP pyta o filtry, a nie o JOINy – gbn
@ gbn Nie jestem pewien, czy treść OP ("filtr" vs. "warunek" itp.) Ma tak duże znaczenie, skoro przykład podany przez PO jest zasadniczo taki sam jak [tutaj] (http://stackoverflow.com/q/1907335/880904), [tutaj] (http://stackoverflow.com/q/1018952/880904), [tutaj] (http: // /stackoverflow.com/q/1401889/880904), [tutaj] (http://stackoverflow.com/q/15483808/880904) i więcej. Wszystkie te mają "JOIN ... ON", zapytaj o "GDZIE" i dołącz podobne odpowiedzi do twojego. Wydaje mi się, że to pytanie zostało wysłuchane, czy też powinniśmy ponownie otworzyć [to pytanie] (http://stackoverflow.com/q/13145275/880904)? –