Подтвердить что ты не робот

Производительность таблиц против просмотров

Недавно начал работать с базой данных, в которой соглашение предназначено для создания представления для каждой таблицы. Если вы предполагаете, что между таблицами и представлениями существует сопоставление "один к одному", мне было интересно, может ли кто-нибудь сказать мне о влиянии производительности на выполнение чего-то подобного. Кстати, это на Oracle.

4b9b3361

Ответ 1

Предполагая, что вопрос касается не материализованных представлений - действительно зависит от запроса, на котором основан взгляд, и что с ним делается. Иногда предикаты могут быть введены в запрос просмотра оптимизатором. Если нет, то это будет не так хорошо, как против самой таблицы. Представления построены поверх таблиц - почему вы ожидаете, что производительность будет лучше?

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

Представления также могут быть обновляемыми - они не являются надежным средством ограничения доступа к ресурсам, если у кого-то есть привилегии INSERT/UPDATE/DELETE в базовых таблицах.

Материализованные представления так же хороши, как и таблицы, но, как известно, ограничивают то, что они поддерживают.

Ответ 2

Вы не объясняете, что делаете в представлениях? 1:1 с таблицами звучит так, как будто вы используете представления больше, чем синонимы, чем представление. IOW, являются представления = "SELECT * FROM table", тогда вы не увидите ни одного удара по производительности, кроме жесткого разбора.

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

Ответ 3

Единственная боль, которую я имел с представлениями, - это распределенный запрос по ссылке БД. Локальный оптимизатор получает некоторые подробности о удаленном объекте, но представление не сообщает об индексах, поэтому вы можете получить некоторые кокетные планы.

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