Прежде всего, если ваше представление ограничивается использованием предложения WHERE, вы, скорее всего, будете страдать от снижения производительности, по крайней мере, из-за невозможности использовать хороший индекс для ваших 10 столбцов, если он конфликтует с собственным используемым индексом представления.
Если представление просто ограничивает столбцы, но не содержит предложения WHERE, это неопределенно - см. Подробности ниже:
Исходя из этой статьи , я предполагаю, что вы понесете штраф, поскольку представление НЕ обязательно будет скомпилировано с использованием ваших 10 столбцов, и вы можете унаследовать неверный план запроса.
Это очень легко проверить:
Выполнить запрос
select * from myView where someNonIndexedColumn = someValue
(убедитесь, что столбец в предложении where НЕ содержится ни в одном из индексов исходной таблицы).
Запустите указанный выше запрос с включенным планом запроса и убедитесь, что он выполняет сканирование таблицы.
Теперь выберите пару столбцов, которые находятся в индексе исходной таблицы, например, убедитесь, что запрос по ним должен использовать индекс покрытия. Скажем, C1 и C2 в индексе I1.
Пробег
select C1, C2 from myTable where C1=x and C2=Y
с включенным планом запроса и убедитесь, что он использует индекс "I1" в качестве покрывающего индекса.
Пробег
select C1, C2 from myView where C1=x and C2=Y
с включенным планом запроса и проверьте, будет ли он выполнять сканирование таблицы или I1 в качестве индекса покрытия.
Я подозреваю, что он выполнит сканирование таблицы, и в этом случае вы ответите: «Extr 190 столбцов - плохая вещь для производительности» - в основном, все негативы в связанной статье Райана Фоннетта применимы к вашему мнению.
Если (маловероятно) использование индекса покрытия в # 5, то тот факт, что у них 190 столбцов, не имеет значения.