Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah Mengubah IF EXIST(SELECT 1 FROM ) menjadi IF EXIST(SELECT TOP 1 FROM ) memiliki efek samping?

Tidak, seharusnya tidak ada perbedaan. EXISTS keluar segera setelah menemukan satu baris yang cocok. Itu sebabnya selalu lebih disukai daripada mis. (select COUNT(*) from ...) > 0 - COUNT akan memaksa semua baris untuk dipertimbangkan.

Jika Anda membuat empat kueri berikut:

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)

Dan aktifkan rencana eksekusi, Anda akan melihat bahwa kueri kedua menghasilkan rencana eksekusi yang menyertakan TOP operator. Kueri ke-3 dan ke-4 menghasilkan identik rencana. TOP diabaikan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa Anda membuat Tampilan dalam database?

  2. Apa itu Operator Logika SEPERTI di SQL Server - Tutorial SQL Server / TSQL Bagian 123

  3. SQL Server 2012:batasan SQL dinamis (> 4000 karakter) (terpisah)

  4. Menggunakan Dapper dengan Tipe Spasial SQL sebagai parameter

  5. Kueri SQL pada banyak basis data