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

Thay đổi IF EXIST (CHỌN 1 TỪ) thành IF EXIST (CHỌN ĐẦU 1 TỪ) có bất kỳ tác dụng phụ nào không?

Không, không nên có sự khác biệt. EXISTS trả tiền ngay sau khi nó đã tìm thấy một hàng phù hợp. Đó là lý do tại sao nó luôn được ưu tiên hơn v.d. (select COUNT(*) from ...) > 0 - một COUNT sẽ buộc tất cả các hàng phải được xem xét.

Nếu bạn tạo bốn truy vấn sau:

select * from sys.objects
select top 1 * from sys.objects
select 1 where exists(select * from sys.objects)
select 1 where exists(select top 1 * from sys.objects)

Và bật kế hoạch thực thi, bạn sẽ thấy rằng truy vấn thứ hai tạo ra một kế hoạch thực thi bao gồm TOP nhà điều hành. Các truy vấn thứ 3 và thứ 4 tạo ra giống hệt nhau các kế hoạch. TOP bị bỏ qua.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm tròn DateTime không mong muốn trong SQL Server

  2. SQL Server thay đổi phông chữ trong chuỗi html

  3. Sql Server 2008 R2 Management Studio - không có Intellisense

  4. Thủ tục được lưu trữ chậm trong Entity Framework

  5. Hãy nhớ điều này khi định dạng kiểu dữ liệu TIME trong SQL Server (T-SQL)