Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tốt nhất để kiểm tra xem mục có tồn tại hay không:Chọn Đếm (ID) HOẶC Tồn tại (...)?

TỒN TẠI, luôn luôn

  • COUNT sẽ duyệt qua bảng hoặc một chỉ mục:bạn đã yêu cầu COUNT
  • EXISTS sẽ dừng ngay khi tìm thấy hàng

Chỉnh sửa, để rõ ràng

Tất nhiên, trong trường hợp này nếu cột email là duy nhất và được lập chỉ mục thì nó sẽ đóng.

Nói chung, EXISTS sẽ sử dụng ít tài nguyên hơn và cũng chính xác hơn. Bạn đang tìm kiếm sự tồn tại của một hàng, không phải "nhiều hơn không" ngay cả khi chúng giống nhau

Edit2:Trong EXISTS, bạn có thể sử dụng NULL, 1, ID hoặc thậm chí 1/0:nó không được chọn ...

Ngày 21 tháng 5 năm 2011 chỉnh sửa:

Có vẻ như điều này đã được tối ưu hóa trong SQL Server 2005+ vì vậy COUNT bây giờ giống với EXISTS trong trường hợp này



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C # tạo cơ sở dữ liệu theo chương trình với SMO

  2. Cách tạo truy vấn tổng hợp trong máy chủ sql mà không có hàm tổng hợp

  3. Cách tìm định dạng ngày được sử dụng trong phiên hiện tại trong SQL Server (T-SQL)

  4. Nội bộ sao chép giao dịch SQL Server

  5. Không đủ số lượng đối số được cung cấp cho thủ tục hoặc hàm cdc.fn_cdc_get_all_changes_