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

Fungsi Bernilai Tabel Membunuh Kinerja Kueri Saya

Mengembalikan Variabel Tabel akan menjadikannya fungsi bernilai tabel multi-pernyataan dan bisa buruk untuk kinerja karena fakta bahwa itu diperlakukan seperti tabel kecuali tidak ada statistik yang tersedia untuk SQL Server untuk mendasarkan rencana eksekusi yang baik - jadi itu akan memperkirakan fungsi sebagai mengembalikan sejumlah kecil baris. Jika mengembalikan jumlah baris yang lebih besar, maka rencana yang dihasilkan bisa jadi jauh lebih tidak optimal.

Padahal, mengembalikan hanya SELECT menjadikannya fungsi bernilai tabel sebaris - menganggapnya lebih sebagai pemandangan. Dalam hal ini, tabel dasar yang sebenarnya dibawa ke kueri utama dan rencana eksekusi yang lebih baik dapat dihasilkan berdasarkan statistik yang tepat. Anda akan melihat bahwa dalam kasus ini, rencana eksekusi TIDAK akan menyebutkan fungsi sama sekali karena pada dasarnya hanya menggabungkan fungsi ke dalam kueri utama.

Ada referensi bagus tentangnya di MSDN oleh Insinyur CSS SQL Server termasuk (kutipan):



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara meminta nilai dan atribut Xml dari tabel di SQL Server?

  2. Jalankan prosedur tersimpan di prosedur tersimpan lain di server SQL

  3. Gunakan Excel 2010 untuk membaca/menulis ke database SQL Server 2008 menggunakan prosedur tersimpan

  4. Setara dengan LIMIT dan OFFSET untuk SQL Server?

  5. Apakah Kunci Asing meningkatkan kinerja kueri?