В чем разница view и таблицы в SQL?
Что проверяют
Понимаете ли вы, что представление это сохранённый запрос, а не данные, и знаете ли про материализованный вариант.
Как отвечать
Таблица хранит данные физически. Представление (view) хранит только текст запроса: при обращении к нему база подставляет запрос и выполняет его на актуальных данных. Своего места на диске у обычного представления нет.
Зачем нужны представления:
- упрощение: сложное соединение пяти таблиц прячется за понятным именем;
- безопасность: пользователю выдаётся доступ к представлению, где нет чувствительных колонок или где строки отфильтрованы по его организации, а к самим таблицам доступа нет;
- совместимость: схема изменилась, а представление сохраняет прежний набор колонок для старых потребителей.
Ограничения: обычное представление не ускоряет ничего, потому что запрос выполняется каждый раз. Изменять данные через него можно только в простых случаях (одна таблица, без агрегатов и группировок), иначе нужны правила или триггеры.
Материализованное представление это уже данные: результат запроса физически сохранён, поэтому чтение мгновенное, а актуальность требует обновления (REFRESH MATERIALIZED VIEW). На нём можно строить индексы. Это рабочий инструмент для тяжёлых отчётов.
Что проверяет тестировщик: что представление показывает те же данные, что и прямой запрос; что фильтрация по правам действительно работает и через представление нельзя увидеть чужие строки; что материализованное представление обновляется по расписанию и данные в отчёте не устарели.
Где спотыкаются
Считают, что обычное представление ускоряет запросы.
Путают представление и временную таблицу.
Забывают, что материализованное представление показывает данные на момент обновления.
Полагают, что через представление всегда можно писать.