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

Urutan eksekusi pernyataan SQL Server

Ini adalah "fitur" yang dikenal dari SQL Server. Jangan pernah berasumsi bahwa klausa WHERE dieksekusi sebelum klausa SELECT.

Lihat:SQL Server harus tidak memunculkan kesalahan yang tidak logis

Sebenarnya ada alasan bagus untuk melakukan itu kadang-kadang. Pertimbangkan untuk menggabungkan dua tabel, dengan A jauh lebih kecil dari B.

select CAST(A.col1 as int), A.col2, B.col3
from A join B ...
where ... isnumeric(A.col1) = 1

Jika Anda memeriksa rencana kueri yang dihasilkan, benar atau salah, server SQL akan mengalirkan data dari A sebagai baris terdepan untuk digabungkan dengan B. Saat melakukan itu, ia tahu bahwa itu hanya perlu menarik col2 dan function on col1 . Itu bisa membawa col1 melalui hanya untuk menjalankan fungsi nanti, atau untuk sesuatu yang sepele seperti CAST, SQL Server mungkin juga mengubah data selama proses streaming.

Satu hal yang pasti, strategi ini membuat SQL Server sedikit lebih cepat dalam kueri tertentu. Tetapi pada perspektif yang murni logis, saya akan menyebutnya bug.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Kunci Utama Komposit di SQL Server (Contoh T-SQL)

  2. Sinkronisasi searah waktu nyata dari sql-server ke repositori data lain

  3. SQL Server 2016 – Pengantar Peregangan Database

  4. sql server membagi nilai yang dipisahkan koma menjadi kolom

  5. Coba Praktik Terbaik Pemantauan Database MySQL ini