Это несколько упрощенное объяснение. Там есть много технических увлечений, но это звучало так, как будто вы хотели получить общее объяснение «wassup».
Вид, по существу, предварительно написанный и сохраненный запрос; всякий раз, когда вы получаете доступ к представлению, вы извлекаете и подключаете этот предварительно написанный запрос к текущему запросу. (В лучшем случае так я об этом думаю.)
Таким образом, эти «основные» виды считывают данные, хранящиеся в таблицах, уже присутствующих в базе данных/на жестком диске. Когда вы создаете кластерный индекс в представлении, то, что вы действительно делаете, это сделать вторую физическую копию данных, на которые ссылается представление. Например, если у вас есть таблица A, создайте view vA как «select * from A», а затем создайте кластерный индекс в этом представлении, то, что у вас получается, - это две копии данных на жестком диске.
Это может быть полезно, если таблица A очень большая, и вы хотите получить быстрый доступ к небольшому подмножеству таблицы (например, только 2-3 столбца или только там, где Status = 1, или вы хотите получить быстрый доступ к данные, для которых требуется уродливое соединение.)
Веселье возникает, когда вы обновляете таблицу A (действительно, любую из таблиц, на которую ссылается вид), так как любые изменения в «базовой» таблице также должны быть сделаны для таблицу «view». Не очень хорошая идея в сильно используемых OLTP-системах.
FYI, я считаю, что «индексированные представления SQL» называются «материализованные представления» в Oracle. Для моих денег, Materialized View - намного лучшее имя/описание.
Говорят, что индексированное представление «материализует» данные вида - путем добавления кластерного индекса, в котором уровень листа является фактическими страницами данных, это именно то, что происходит. И именно по этой причине индексированный просмотр обычно намного быстрее, чем «обычный» вид. –