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

Akankah menggunakan Fungsi untuk menyederhanakan SQL Query berdampak besar pada kinerja?

Biasanya, memilih hasil dari fungsi skalar tidak akan banyak merugikan, tetapi filtering dengan itu dapat dengan mudah menghabiskan ratusan detik (tidak harus begitu).

Jika Anda perlu memfilter berdasarkan hasil fungsi skalar (WHERE col = dbo.scalar_function() ), seringkali membantu untuk membuat fungsi bernilai tabel sebaris sebagai gantinya. Itu akan mengembalikan nilainya sebagai satu-satunya baris tabel hasil. Anda kemudian akan melakukan inner join dengan hasil fungsi, memfilter secara efektif berdasarkan nilai yang dikembalikan. Ini berfungsi karena SQL Server selalu dapat melepaskan fungsi bernilai tabel sebaris dan memasukkannya ke dalam kueri panggilan.

Perhatikan bahwa trik ini tidak akan berfungsi jika fungsinya multi-langkah. Ini tidak dapat dibatalkan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat soket di dalam pemicu SQL-CLR atau prosedur tersimpan

  2. Bagaimana saya bisa mendapatkan tanggal maksimal (per kunci utama) dan mendapatkan perbedaannya dengan yang dari tabel lain?

  3. SQL Server:baris menjadi kolom

  4. Penanganan Kesalahan dengan Kursor di SQL

  5. Masalah dalam menerapkan proyek DB