Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте параметризиран VIEW в SQL Server 2008

Опитайте да създадете вградена функция със стойност на таблица. Пример:

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)

Ако прегледате плана за изпълнение на SELECT, изобщо няма да видите споменаване на функцията и всъщност просто ще ви покаже основните таблици, за които се изисква запитване. Това е добре, тъй като означава, че статистическите данни за основните таблици ще бъдат използвани при генериране на план за изпълнение на заявката.

Нещото, което трябва да избягвате, би била функцията, оценявана в таблица с множество изрази, тъй като основната статистика на таблицата няма да се използва и може да доведе до лоша производителност поради лош план за изпълнение.
Пример за това, което да избягвате :

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

Незначително различно, но с потенциално големи разлики в производителността, когато функцията се използва в заявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изберете определен брой символи отляво или отдясно на низ в SQL Server

  2. TSQL:Как да конвертирам местно време в UTC? (SQL Server 2008)

  3. Каква е целта на репликацията на данни?

  4. Съхранявайте множество битови стойности в една колона на таблицата

  5. Архивиране на ниво таблица