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

Buat VIEW berparameter di SQL Server 2008

Coba buat fungsi bernilai tabel sebaris. Contoh:

CREATE FUNCTION dbo.fxnExample (@Parameter1 INTEGER)
RETURNS TABLE
AS
RETURN
(
    SELECT Field1, Field2
    FROM SomeTable
    WHERE Field3 = @Parameter1
)

-- Then call like this, just as if it's a table/view just with a parameter
SELECT * FROM dbo.fxnExample(1)

Jika Anda melihat rencana eksekusi untuk SELECT, Anda tidak akan melihat penyebutan fungsi sama sekali dan sebenarnya hanya akan menunjukkan kepada Anda tabel-tabel dasar yang ditanyakan. Ini bagus karena artinya statistik pada tabel yang mendasarinya akan digunakan saat membuat rencana eksekusi untuk kueri.

Hal yang harus dihindari adalah fungsi bernilai tabel multi-pernyataan karena statistik tabel yang mendasari tidak akan digunakan dan dapat mengakibatkan kinerja yang buruk karena rencana eksekusi yang buruk.
Contoh dari apa yang harus dihindari :

CREATE FUNCTION dbo.fxnExample (@Parameter1 INTEGER)
    RETURNS @Results TABLE(Field1 VARCHAR(10), Field2 VARCHAR(10))
AS
BEGIN
    INSERT @Results
    SELECT Field1, Field2
    FROM SomeTable
    WHERE Field3 = @Parameter1

    RETURN
END

Agak berbeda, tetapi dengan potensi perbedaan kinerja yang besar saat fungsi tersebut digunakan dalam kueri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kirim Email dengan Lampiran di SQL Server (T-SQL)

  2. SQL Server UNION - Apa ORDER BY Behavior default?

  3. BUAT TABEL JIKA TIDAK ADA yang setara di SQL Server

  4. 6 Cara Menggabungkan String dan Angka di SQL Server

  5. T-SQL:Menghapus semua baris duplikat tetapi menyimpannya