Так , представленням даних може бути призначений кластерний індекс, і коли вони будуть, вони зберігатимуть тимчасові результати, які можуть пришвидшити отримані запити.
Оновлення: Щонайменше троє людей проголосували за мене. З усією повагою я вважаю, що вони просто помиляються; З власної документації Microsoft чітко видно, що Views може підвищити продуктивність.
По-перше, прості погляди розширюються на місці, а тому безпосередньо не сприяють покращенню продуктивності - це багато правдивого. Однак індексовані представлення можуть значно підвищити ефективність.
Дозвольте мені перейти безпосередньо до документації:
Після створення унікального кластерного індексу в представленні даних, набір результатів подання негайно матеріалізується та зберігається у фізичному зберіганні в базі даних, економлячи накладні витрати на виконання цієї дорогої операції під час виконання.
По-друге, ці індексовані представлення можуть працювати навіть тоді, коли інший запит не посилається на них безпосередньо, оскільки оптимізатор використовуватиме їх замість посилання на таблицю, коли це доречно.
Знову ж таки, документація:
Індексований вигляд може використовуватися для виконання запиту двома способами. Запит може безпосередньо посилатись на індексований вигляд, або, що ще важливіше, оптимізатор запитів може вибрати представлення, якщо він визначає, що подання може бути замінено деяким або всім запитом у плані запитів з найнижчою вартістю. У другому випадку індексований вигляд використовується замість базових таблиць та їх звичайних індексів. Представлення даних не потрібно посилатись у запиті для оптимізатора запитів, щоб використовувати його під час виконання запиту. Це дозволяє діючим програмам скористатися новоствореними індексованими переглядами, не змінюючи цих програм.
Цю документацію, а також графіки, що демонструють поліпшення продуктивності, можна знайти тут .
Оновлення 2: відповідь критикували виходячи з того, що саме "індекс" забезпечує перевагу продуктивності, а не "Перегляд". Однак це легко спростувати.
Скажімо, що ми є програмною компанією в невеликій країні; Я буду використовувати приклад Литву. Ми продаємо програмне забезпечення по всьому світу і зберігаємо свої записи в базі даних SQL Server. Ми дуже успішні, тому за кілька років ми маємо 1 000 000 записів. Однак нам часто потрібно повідомляти про продажі для цілей оподаткування, і ми виявляємо, що ми продали лише 100 копій програмного забезпечення в нашій країні. Створюючи індексований вигляд лише записів Литви, ми отримуємо необхідні записи, які нам потрібні, в індексованому кеші, як описано в документації на MS. Коли ми запускаємо наші звіти про продаж литовців у 2008 році, наш запит буде шукати індекс глибиною всього 7 (Log2 (100) з деякими невикористаними листям). Якби ми зробили те ж саме без VIEW і просто покладаючись на індекс в таблицю, нам довелося б перейти дерево індексу з глибиною пошуку 21!
Зрозуміло, що саме Перегляд забезпечив би нам перевагу у виконанні (3 рази) порівняно з простим використанням індексу. Я намагався використовувати приклад у реальному світі, але ви зауважите, що простий список продажів у Литві дав би нам ще більшу перевагу.
Зауважте, що я просто використовую пряме b-дерево для свого прикладу. Хоча я досить впевнений, що SQL Server використовує якийсь варіант b-дерева, я не знаю деталей. Тим не менш, справа має місце.
Оновлення 3: Постало питання про те, чи індексований вид просто використовує індекс, розміщений у нижній таблиці. Тобто, перефразовуючи: "індексований вигляд є лише еквівалентом стандартного індексу, і він не пропонує нічого нового або унікального для представлення". Якби це було правдою, звичайно, тоді наведений аналіз був би невірним! Дозвольте навести цитату з документації Microsoft, яка демонструє, чому я вважаю, що ця критика не є дійсною чи правдою:
Використання індексів для підвищення продуктивності запитів не є новою концепцією; однак індексовані представлення забезпечують додаткові переваги від продуктивності, яких неможливо досягти за допомогою стандартних індексів.
Разом з вищенаведеною цитатою щодо збереження даних у фізичному зберіганні та іншою інформацією в документації про те, як створюються індекси для Views, я думаю, що можна з упевненістю сказати, що індексований вигляд - це не просто кешований SQL Select, який трапляється для використання індекс, визначений у головній таблиці. Таким чином, я продовжую відстоювати цю відповідь.