Создание и управление индексами. Создание и управление встроенными процедурами. Оптимизация производительности запросов. Управление транзакциями и блокировками, страница 11

Расположение информации об объявлении просмотрщика

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

Просмотрщик или системная таблица

Отображает

INFORMATION_SCHEMA.TABLES or sysobjects

Имя просмотрщика

INFORMATION_SCHEMA.VIEW_TABLE_USAGE or sysdepends

Имена базовых объектов

INFORMATION_SCHEMA.VIEWS or syscomments

Объявление просмотрщика

INFORMATION_SCHEMA.VIEW_COLUMN_USAGE or syscolumns

Колонки просмотрщика

Для просмотра текста просмотрщика, вы можете вызвать и процедуру sp_helptext:

sp_helptext EmployeeView

Для просмотра зависимостей, вы можете также вызвать процедуру sp_depends:

sp_depends EmployeeView

Скрытие объявления просмотрщика

Так как пользователи могут просмотреть объявление просмотрщика, вы можете захотеть спрятать объявление определённых просмотрщиков.

Вы можете зашифровать содержимое таблицы syscomments, которая содержит текст оператора CREATE VIEW с помощью указания опции WITH ENCRIPTION в объявлении просмотрщика.

Прежде чем шифровать просмотрщик, убедитесь, что объявление сохранено в файл. Для расшифровки вы должны будете удалить просмотрщик и создать его заново, или изменить его, используя оригинальный синтаксис.

Следующий пример создаёт зашифрованный просмотрщик:

USE Northwind

GO

CREATE VIEW dbo.[OrderSubtotals]

WITH ENCRYPTION

AS

SELECT OrderID,

SUM(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100)

AS Subtotal

FROM [Order Details]

GROUP BY OrderID

GO

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

Изменение данных с помощью просмотрщика

Просмотрщик не содержит отдельной копии данных. Вместо этого, он отображает результирующий набор запроса одной или более таблиц. Однако, когда вы изменяете данные в просмотрщике, они изменяются и в базовой таблице.

С некоторыми ограничениями, вы можете вставлять, обновлять и удалять данные из просмотрщика. Обычно для этого просмотрщик должен быть объявлен для одной таблицы и не должен содержать оператора GROUP BY.

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

*  Нельзя воздействовать на некоторые колонки. Нельзя воздействовать на колонки, которые являются результатом расчёта.

*  Вы можете получить ошибку, если попытаетесь воздействовать на колонку, которая не объявлена в просмотрщике. Для примера, если вы получили сообщение об ошибке во время вставки строки в просмотрщик, который содержит колонку не описанную в просмотрщике и не разрешающий нулевые значения.

8.3 Оптимизация производительности с использование просмотрщиков

Здесь мы поговорим о производительности с использованием просмотрщиков, и как они могут позволить оптимизировать производительность с помощью хранения результата комплексного запроса и разделённые данные.

Рассмотрение производительности

Когда просмотрщик, который объединяет несколько таблиц и вычисляет комплекс вычислений входит в другой просмотрщик, определить источник потери производительности очень сложно. Поэтому лучше создавать отдельные объявления просмотрщиков чем вложенные. В следующем примере, просмотрщик запрашивает набор строк из Другова просмотрщика TotalPurchaseView:

USE Northwind

GO

CREATE VIEW dbo.TopSalesView

AS

SELECT *

FROM dbo.TotalPurchaseView

WHERE Subtotal > 5000

GO

Просмотрщик TopSalesView прячет от нас сложные расчёты запроса используемого в TotalPurchaseView, который объединяет три базовых таблицы.

USE Northwind

GO

CREATE VIEW dbo.TotalPurchaseView

AS

SELECT CompanyName,

SUM(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100)