Tôi đang sử dụng SQL Server 2008 R2Sự khác biệt giữa các cách viết khác nhau NẾU tồn tại?
Tôi chỉ muốn kiểm tra xem một cái gì đó tồn tại trong một bảng
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'
Họ có bất kỳ sự khác biệt trong kết quả/tác dụng phụ/hiệu suất (bất kể có bao nhỏ)?
Cảm ơn bạn
Cảm ơn bạn! Vì vậy, bạn ngụ ý rằng những truy vấn đó có một số khác biệt khi chúng không được ghép nối với IF EXISTS? – user1589188
@ user1589188: chắc chắn - nếu bạn có một "độc lập" 'SELECT *' - đó là xấu bởi vì bạn nhận được (a) tất cả các cột (bạn có thực sự cần *** tất cả *** cột ???), (b) bạn không chỉ định cột nào bạn muốn (có thể gây bất ngờ khó chịu nếu cột BLOB như hình ảnh được thêm vào tại một số điểm) và v.v. Khi không bên trong một 'IF EXISTS (..)' Tôi ủng hộ ** không bao giờ ** sử dụng 'SELECT *' (chắc chắn không có trong mã sản xuất của bạn) - luôn sử dụng ** danh sách các cột ** rõ ràng, và lấy vài cột như bạn thực sự thực sự cần. –