Niedawno dowiedziałem się o istnieniu nowej klauzuli "EXCEPT" w SQL Server (trochę późno, wiem ...) za pośrednictwem kodu odczytu napisanego przez współpracownika. Naprawdę mnie zadziwiło!Kiedy używać EXCEPT zamiast NOT EXISTS w Transact SQL?
Ale wtedy mam kilka pytań dotyczących jego użycia: kiedy jest zalecane zatrudnienie? Czy jest różnica między wydajnością, a wykorzystaniem skorelowanej kwerendy z "AND NOT EXISTS ..."?
Po przeczytaniu artykułu WYJŚCIE w BOL, myślałem, że to tylko skrót do drugiej opcji, ale był zaskoczony, gdy przepisałem kilka zapytań z niego korzystających (więc mieli składnię "AND NOT EXISTS" o wiele bardziej znaną dla mnie), a następnie sprawdzone plany wykonania - niespodzianka! Wersja EXCEPT miała krótszy plan wykonania, a także szybciej. Czy to zawsze tak jest?
Więc chciałbym wiedzieć: jakie są wytyczne dotyczące korzystania z tego potężnego narzędzia?
Dobry odnośnik: http://explainextended.com/2009/09/15/not-in-vs-not-exists-vs -left-join-is-null-sql-server/ –
@rexem: Twoje referencje nigdy nie wspominają o klauzuli EXCEPT ... –
Nie, ale mówi się o NOT EXISTS wydajność. Strona jest również doskonałym odnośnikiem do powiązanych pytań dotyczących wydajności db. –