SQL View Вопрос - PullRequest
       2

SQL View Вопрос

3 голосов
/ 03 сентября 2010

Есть ли какие-либо негативные последствия создания представлений, особенно больших (более 50 столбцов) в базе данных?

Ответы [ 5 ]

1 голос
/ 03 сентября 2010

A SELECT в представлении (не индексируемом) выполняет что-то вроде:

SELECT Xyz FROM
(
    SELECT Abc FROM yourbigtable
)

Так что сначала проверьте производительность запросов, которые вы хотите выполнить.

Попробуйте сначала решить проблему без представлений, а затем упростите ее.

Майк

1 голос
/ 03 сентября 2010

С точки зрения производительности, я бы сказал, что на самом деле отрицательного эффекта нет.Если базовый запрос неэффективен и может вызвать нежелательную блокировку, представление унаследует эти проблемы, хотя и несколько смягчается тем фактом, что вероятность его кэширования выше, чем произвольное утверждение.Я бы сказал, что риск возникновения негативных последствий заключается в том, что, создавая представление и абстрагируя сложность запроса, вы рискуете его использовать без четкого понимания характеристик базового запроса.Затем с положительной стороны также открываются некоторые другие возможности оптимизации (индексированные представления и т. Д.), И бывают случаи, когда возможность отмены нормализации набора данных может значительно снизить необходимость написания избыточных запросов.

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

1 голос
/ 03 сентября 2010

Зависит от того, является ли это 1 столбцом из 50 внутренних объединенных таблиц или 50 столбцами из 1 таблицы.
Если честно, то все в порядке, если вы не используете в них много скалярных функций.

Если подумать, это очень субъективный вопрос. Вставьте некоторый код;)

0 голосов
/ 03 сентября 2010

Если это индексированное представление, оно займет больше места в вашей БД и замедлит обновление записей в базовых таблицах.

0 голосов
/ 03 сентября 2010

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

...