В чем разница между сохраненными функциями и представлениями в БД? - PullRequest
0 голосов
/ 02 декабря 2011

Я не обнаружил разницу между Хранимыми функциями и Представления .Использование Views в SELECT выполнит запрос и вернет результат, но Stored Functions делают то же самое, не так ли?Так в чем же разница?Когда я использую Представления и когда Сохраненные функции ?

Ответы [ 6 ]

5 голосов
/ 02 декабря 2011

Вид: Представление является виртуальным table. Это не физически существует. Скорее, он создается запросом joining один или несколько tables. Вид returns a table.

Хранимая процедура: Хранимая процедура - это группа Transact-SQL операторов, скомпилированных в единый план выполнения.
хранимые процедуры returns Output parameters, return codes (которые всегда являются целочисленными значениями), набор результатов для каждой инструкции SELECT, содержащейся в хранимой процедуре или любых других хранимых процедурах, вызываемых хранимой процедурой, глобальный курсор, на который можно ссылаться вне хранимой процедуры.
ключевые преимущества хранимой процедуры : Precompiled execution, reduced client/server traffic, efficient reuse of code, programming abstraction и enhanced security controls.

Обновление:

A хранимая функция - это именованный блок PL / SQL, который похож на процедуру. Основное различие между процедурой и функцией заключается в том, что функция всегда должна возвращать значение, но процедура может возвращать или не возвращать значение. 1) Тип возвращаемого значения: раздел заголовка определяет тип возвращаемого значения функции. Возвращаемый тип данных может быть любым из типов данных oracle, таких как varchar, number и т. Д. 2) Секция исполнения и исключения должна возвращать значение, имеющее тип данных, определенный в секции заголовка

1 голос
/ 02 декабря 2011

У вас может быть сохраненная функция, возвращающая те же данные, что и в большинстве баз данных.

Для меня различие заключается в том, что функция выполняется и вид выбирается из.

Представление будет вести себя как таблица.

0 голосов
/ 02 декабря 2011

Из своего опыта я делюсь с вами своими знаниями:

  • Не используйте представления
  • Лучше использовать хранимую процедуру (это скомпилированная инструкция SQL), выпри необходимости можно использовать параметризованную процедуру.
  • Хранимая функция - это сборник выполненного оператора SQL, который работает быстрее.

Примечание. Представления - это оператор SELECT (с / без JOIN) для таблицы, которая выбирает данные из таблицы, и если мы снова запустим оператор SELECT из VIEWS, который обеспечит более медленный результат, поскольку внутренняя операция имеет вид (SELECT * FROM ( SELECT * FROM TargetTable ))

Так что лучше использовать Хранимая функция

Обновление:

Функции являются вычисленными значениями и не могут выполнять постоянное изменение среды на SQL Server (т. Е. Операторы INSERT или UPDATE не допускаются).

Функцию можно использовать встроенным в SQL-выражениях, если она возвращает скалярное значение, или к ней можно присоединиться, если она возвращает набор результатов.

Также см. Здесь для сравнения производительности: SQL-Server Performance: Что быстрее, хранимая процедура или представление?

0 голосов
/ 02 декабря 2011

Их нельзя сравнивать, у них совершенно разные подход.

Представление представляет собой output из query и составляет virtual image таблицы, а входные параметры не принимаются.

Основным отличием является то, что хранимая процедура может изменить ваши данные, где как мнение только возвращает его, и я считаю, с точки зрения производительности вид, хранимая процедура лучше, поскольку она кэширует план выполнения и в результате будет работать быстрее.

сохраненная процедура / функция - это группа SQL-операторов, которые предварительно выполняются, и она принимает параметры. Она уменьшает сетевой трафик, обеспечивает более высокую производительность и т. Д.

Функции SQL в языках программирования - это подпрограммы, используемые для инкапсуляции часто выполняемой логики. это несколько замедляет работу.

Проверьте эти Представление SQL , Хранимые процедуры SQL и Пользовательские функции SQL

Мое мнение таково, что хранимую процедуру SQL (хранимые функции) гораздо удобнее использовать, поскольку она также предоставляет настраиваемые манипуляции для набора результатов.

0 голосов
/ 02 декабря 2011

Становимся проще (ПОЖАЛУЙСТА, начните читать книгу о SQL): представление выглядит как таблица, поэтому вы можете фильтровать результаты, и этот фильтр будет эффективно участвовать в выполнении представлений или выполнять объединения.SP не позволяет этого, но гораздо больше логики.Остальное ... в документации.

0 голосов
/ 02 декабря 2011

Представление возвращает конкретный предопределенный оператор как ровно один набор результатов.

Функция возвращает отдельные значения или один набор результатов.Однако это может отличаться от базы данных разных типов.

В некоторых реализациях БД также есть хранимые процедуры, в которых результатом может быть одно возвращаемое значение, набор результатов или несколько наборов результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...