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

Разлика между вградена функция и изглед

След като прочетох много от отговорите тук, бих искал да отбележа, че има голяма разлика между вградена функция с таблична стойност и всеки друг вид функция (скаларна или многоредова TVF).

Вграденият TVF е просто параметризиран изглед. Може да се разширява и оптимизира точно като изглед. Не е необходимо да се материализира нищо преди „връщане на резултати“ или нещо подобно (въпреки че, за съжаление, синтаксисът има RETURN .

Голямо предимство, което открих от вградения TVF пред изгледа, е, че той принуждава изискването за параметризиране, докато с изгледа трябва да приемете, че повикващият ще се присъедини по подходящ начин или ще ограничи използването на изгледа.

Например, имаме много големи таблици с факти в DW с типичен звезден модел на Кимбъл. Имам мнение за модел, центриран върху таблица на фактите, който се обажда без никакви ограничения, ще върне стотици милиони редове. Чрез използване на вграден TVF с подходяща параметризация, потребителите не могат случайно да поискат всички редове. Производителността е до голяма степен неразличима между двете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XML query() работи, value() изисква singleton found xdt:untypedAtomic

  2. Инсталиране на SQL Server 2017

  3. Завъртане с помощта на SQL Server 2000

  4. Конфигурирайте Lucene.Net със SQL Server

  5. Предоставяне на достъп до една база данни на потребители/роли на друга