Вопрос

У меня есть сценарий, где я объединяю две таблицы в одну (использующую Union), а также присоединиться к данным из некоторых других таблиц.

Я могу сделать это либо с помощью функции представления UDF / пользователем.

Учитывая, что я не имею никакого взгляда на все в моей базе данных, но довольно несколько UDF для поиска FullText и тому подобное, я искушаю использовать UDF для этого сценария, чтобы сохранить его «чистым».

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

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

Есть ли другая причина выбрать один над другим или не имеет значения?

Это было полезно?

Решение

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

Я предполагаю, что вы говорите о линейном столовом UDF, который в значительной степени имеет идентичные характеристики производительности. Безопасность на UDF немного отличается, и вы не можете иметь вместо того, чтобы триггеры могли сделать «вставки» на вид. Преимущество UDF было бы то, что вы можете принудительно принудить параметры, которые обеспечивают тем самым, как и ожидалось, что моблоки использования используются, тогда как представление может быть запрошено без каких-либо критериев (возможно, случайно).

Если вы получили желание иметь UDF для параметризации, вы можете сломать его сверху вида (так что нет дублирования кода), и вы должны обнаружить, что производительность существенно не влияет, потому что оптимизатор может сочетать представления и встроенный TVF успешно.

Другие советы

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

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

Надеюсь это поможет !

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top