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

Kapan Anda akan menggunakan fungsi bernilai tabel?

Fungsi bernilai tabel adalah tampilan parameter "hanya". Hal ini membuat mereka sangat kuat untuk merangkum logika yang seharusnya tersembunyi di balik prosedur tersimpan buram. Ini contohnya:

Fungsi Bernilai Tabel Sebaris:

create function dbo.GetClients (
    @clientName nvarchar(max) = null
)
returns table
return (
    select *
    from dbo.Clients as a
    where ((a.ClientName = @clientName) or a.ClientName is null)
);

Prosedur Tersimpan:

create procedure dbo.usp_GetClients (
    @clientName nvarchar(max) = null
)
as
begin;
    select *
    from dbo.Clients as a
    where ((a.ClientName = @clientName) or a.ClientName is null)
end;

Tidak seperti panggilan prosedur tersimpan, fungsi bernilai tabel memungkinkan saya untuk menyusun logika dari dbo.GetClients dengan objek lain:

select *
from dbo.GetClients(N'ACME') as a
join ... as b
    on a.ClientId = b.ClientId

Dalam situasi seperti itu saya tidak dapat membayangkan menggunakan prosedur tersimpan karena betapa terbatasnya jika dibandingkan dengan fungsi bernilai tabel. Saya akan dipaksa untuk menyusun data di sekitar saya menggunakan tabel sementara, variabel tabel, atau lapisan aplikasi untuk menggabungkan hasil dari beberapa objek.

Fungsi bernilai tabel sebaris sangat mengagumkan karena bit "sebaris" yang mungkin paling baik dijelaskan di sini. Hal ini memungkinkan pengoptimal untuk memperlakukan fungsi tersebut tidak berbeda dengan objek yang mereka enkapsulasi, sehingga menghasilkan rencana kinerja yang mendekati optimal (dengan asumsi bahwa indeks dan statistik Anda ideal).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pisahkan nilai yang dipisahkan koma dan simpan dalam tabel di server sql

  2. Kapan performa Distinct dan Group By berbeda?

  3. MSDTC di server 'server tidak tersedia'

  4. ISDATE() Contoh di SQL Server

  5. Cara Menggunakan Pencarian Semantik di SQL Server