Я использую MS SQL Server.
Когда я определяю схему базы данных, я определяю (нематериализованное) представление, которое включает в себя множество полей, например, следующим образом (где «Topic» - это имя таблицы, а представление - это самостоятельное соединение на Таблица тем):
CREATE VIEW View_Topic_Ancestor AS
SELECT
Subordinate.Id AS Subordinate_Id,
Subordinate.Folder_Id AS Subordinate_Folder_Id,
Subordinate.topicTitle AS Subordinate_topicTitle,
Subordinate.topicXhtml AS Subordinate_topicXhtml,
Subordinate.crossLinked AS Subordinate_crossLinked,
Superior.Id AS Superior_Id,
Superior.topicTitle AS Superior_topicTitle,
Superior.topicXhtml AS Superior_topicXhtml,
Superior.crossLinked AS Superior_crossLinked
FROM Topic AS Subordinate LEFT OUTER JOIN Topic AS Superior
ON Superior.Folder_Id = Subordinate.Folder_Id
AND
Superior.LeftValue = (SELECT MAX(Ancestor.LeftValue)
FROM Topic AS Ancestor
WHERE Subordinate.LeftValue > Ancestor.LeftValue
AND Subordinate.LeftValue < Ancestor.RightValue
AND Subordinate.Folder_Id = Ancestor.Folder_Id)
Позже (во время выполнения) я использую это представление в операторе выбора, например:
SELECT
T.Id AS Shared_Id,
V.Superior_Id,
V.Superior_topicTitle,
V.Subordinate_Id,
V.Subordinate_Folder_Id,
V.Subordinate_topicXhtml
FROM Topic AS T, View_Topic_Ancestor AS V
WHERE Folder_Id='e2eb2b68-738d-49ad-9787-a1e655b7973f'
AND T.crossLinked = V.Subordinate_Id
Этот оператор SELECT не ссылается (не выбирает) многие поля, которые находятся в представлении: например, он выбирает поле Subordinate_topicXhtml, но не выбирает поле Superior_topicXhtml.
Мои вопросы:
1) Значительно ли влияют на производительность поля, которые определены в представлении, но на которые нет ссылок при выборе во время выполнения из представления? Предположим, если хотите, чтобы поле Superior_topicXhtml содержало много данных (это очень длинная строка).
2) Как я могу проверить ответ на этот вопрос сам? Является ли тестирование (измерение истекшего времени с помощью секундомера) единственным способом или возможно получить ответ, основанный на теории? Я использую «Microsoft Server SQL Management Studio» для Microsoft SQL Server 2008 с SQL Express. Я вижу, как получить (но не научился интерпретировать) «оценочный план выполнения» для этого запроса, но он показывает только то, какие индексы и циклы происходят, а не то, извлекаются ли данные из полей, на которые нет ссылок.