Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Tworzenie sparametryzowanego VIEW w SQL Server 2008

Spróbuj utworzyć wbudowaną funkcję z wartością przechowywaną w tabeli. Przykład:

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)

Jeśli przejrzysz plan wykonania dla SELECT, w ogóle nie zobaczysz wzmianki o funkcji, a w rzeczywistości pokażesz tylko tabele bazowe, których dotyczy zapytanie. Jest to dobre, ponieważ oznacza to, że podczas generowania planu wykonania zapytania zostaną użyte statystyki dotyczące tabel bazowych.

Należy unikać funkcji z wartościami tabelowymi zawierającymi wiele instrukcji, ponieważ podstawowe statystyki tabeli nie będą używane i mogą skutkować niską wydajnością z powodu złego planu wykonania.
Przykład tego, czego unikać :

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

Nieco inny, ale z potencjalnie dużymi różnicami w wydajności, gdy funkcja jest używana w zapytaniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz oświadczenie, aby znaleźć duplikaty w określonych polach

  2. ASIN() Przykłady w SQL Server

  3. Jak działa funkcja TRANSLATE() w programie SQL Server (T-SQL)

  4. Wdróż zawsze włączone grupy dostępności programu SQL Server w systemie Linux

  5. Sporadyczne awarie połączenia ODBC