Мы продолжаем изучение реализованного в версии SQL Server 2016 нового средства — временных таблиц, в частности кода и демонстрационных данных. Это завершающая статья серии, а первая («Cоздание временных таблиц и модификация данных») была опубликована в предыдущем номере журнала. Таблицы с управлением версиями — это новое средство, реализованное в системе Microsoft SQL Server 2016. В первой части речь шла о том, что представляют собой такие таблицы, как они создаются и как вносятся изменения в данные, которые хранятся в подобных таблицах. В данной статье основное внимание уделяется организации запросов к данным, а также соображениям, касающимся оптимизации.

Напомню, что на момент подготовки статьи новейшей общедоступной версией пакета SQL Server 2016 является версия CTP2. Чтобы познакомиться с изменениями и добавлениями в последующих версиях, обратитесь к официальной документации по продукту.

Если вы хотите выполнять описываемые в настоящей статье запросы и получать те же результаты, что и в моих примерах, вам нужно будет включить в свои таблицы соответствующие демонстрационные данные. С помощью кода, приведенного в листинге 1, создайте текущую таблицу и таблицу истории изменений (Employees и EmployeesHistory) и введите в них демонстрационные данные.

Запустите следующий код, чтобы увидеть содержимое текущей таблицы:

SELECT *
FROM dbo.Employees;

На экране 1 показан результат выполнения данного запроса.

 

Содержимое таблицы Employees
Экран 1. Содержимое таблицы Employees

Запустите следующий код для отображения содержимого таблицы истории изменений:

SELECT *
FROM dbo.EmployeesHistory;

Результат выполнения данного запроса приведен на экране 2.

 

Содержимое таблицы EmployeesHistory
Экран 2. Содержимое таблицы EmployeesHistory

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

Соображения по запросам к данным и оптимизации

Содержащиеся во временной таблице сведения хранятся в двух таблицах (в текущей и истории изменений), но приложение может и не иметь сведений об этом. Приложение должно взаимодействовать только с одной таблицей. Если ваш запрос касается лишь текущих данных, вам следует опрашивать только текущую таблицу и не использовать специальные операторы. Предположим, что вы хотите получить сведения о служащих на текущий момент. Выполните следующий запрос:

SELECT *
FROM dbo.Employees;

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

 

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.
Купить номер с этой статьей в PDF