Ostatnio zdarzyło mi się natrafić na nie() w Sql Server i Oracle. Próbowałem różnych przykładów porównujących warunki NOT i nie() z różnymi operatorami, takimi jak LIKE, IN itp. Nie widzę żadnej różnicy pod względem zestawu wyników i liczby rekordów, ale chcę potwierdzić za pomocą wspólnoty, jeśli oba z nich robią to samo lub jakiekolwiek zastrzeżenie?Jaka jest różnica między warunkiem NOT a NOT() w Oracle i MS SQL Server
Przykład Zapytania
select count(*) from Emp where country not in ('ENGLAND UK', 'HAITI', 'IRELAND')
select count(*) from Emp where not(country in ('ENGLAND UK', 'HAITI', 'IRELAND'))
W programie SQL Server można uzyskać serwer do generowania planów wykonania. Następnie można porównać plany wykonania dla tych dwóch zapytań i zobaczyć, że są one identyczne. W Oracle istnieje podobna funkcjonalność pod inną nazwą. –
SQL 2014 i 2016: z literalną listą argumentów w klauzuli 'IN()', brak różnic w planach wykonania SQL. jeśli zaangażowana jest kolumna PK, będzie to wyszukiwanie w indeksie klastrowym, w przeciwnym razie sklasyfikowane w indeksie. z podkwerendą i optymalnymi kluczami, będą to dwa skany i lewe anti semi join, bez względu na to, gdzie znajduje się operator "NOT". – dlatikay