Używam programu SQL Server 2008 R2Różnica między różnymi sposobami pisania IF istnieje?
Chcę po prostu sprawdzić, czy coś istnieje w tabeli
IF EXISTS (SELECT * FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT ca FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT 1 FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT (1) FROM ta WHERE ca = 'abc') PRINT 'YES'
IF EXISTS (SELECT TOP 1 1 FROM ta WHERE ca = 'abc') PRINT 'YES'
mają one żadnych różnic w wyniku/efektem ubocznym/wydajność (nie ważne jak małe)?
Dziękuję
Dziękujemy! Czyli sugerujesz, że te zapytania mają pewne różnice, gdy nie są sparowane z IF EXISTS? – user1589188
@ user1589188: sure - jeśli masz "stand-alone" 'SELECT *' - to jest złe, ponieważ dostajesz (a) wszystkie kolumny (naprawdę potrzebujesz *** wszystkie *** kolumny ???), (b) nie określając, które kolumny mają być (może się nieprzyjemnie zaskoczyć, jeśli w pewnym momencie dodana zostanie kolumna BLOBa) i tak dalej. Gdy nie ma w środku "JEŚLI EGZAMINÓW (...)", zalecam ** nigdy ** używać 'SELECT *' (zdecydowanie nie w twoim kodzie produkcyjnym) - zawsze używaj ** wyraźnych ** list kolumn i chwyć jak mało kolumn tak jak naprawdę potrzebujesz. –