УЦ Контакт

Лидер IT образования

Как приятно знать, что ты что-то узнал (Мольер)

 
03056, Киев, пер. Ковальский 13, 1-й этаж, офис №2
 
Программы курсов

Акция! Студентам - Скидка 15%! Слушателям IT Academy бесплатное посещение English Club

Статья>>SQL server-табличные переменные

Говоря об использовании временных рабочих пространств в SQL Server, мы говорим об использовании курсоров, табличных переменных, временных таблиц, а также постоянных рабочих таблиц. По большому счету, разработчики стремятся уменьшить необходимость использования этих временных рабочих пространств, имея в своем арсенале возможность Сервера SQL выполнять вместо стандартной построчной обработки с помощью курсора операции над множествами записей. Однако чаще всего временные рабочие пространства активно используются при выполнении запроса – что правда, несколько в ином ключе. Для работы с курсорами, табличными переменными, временными таблицами, а также постоянными рабочими таблицами важно понимать суть – назначение и особенности работы всех временных рабочих пространств. SQL Server 2000 порадовала пользователей новой функциональностью – возможностью использования табличных переменных, что позволяет уменьшить число операций ввода/вывода, связанных с использованием временных таблиц. Впрочем, использование табличных переменных не всегда эффективно, поскольку высокая производительность их работы возможна лишь при относительно небольших наборах данных - когда табличная переменная содержит менее 3000 строк данных. В больших системах продуктивность выполнения операций может быть снижена – поскольку все же может быть использована база данных tempdb. Достаточно полезный в использовании инструмент - временные таблицы. Данные таблицы доступны и могут быть использованы только в текущем подключении текущему пользователю, при этом при завершении выполнения хранимой процедуры либо же при глобальном отключении рабочей станции локальные временные таблицы удаляются. Следует запомнить, что имена локальных временных таблиц должны начинаться с символа #. Существенное отличие от локальных временных таблиц имеют глобальные таблицы – последние используются любым из пользователей. Удаление их возможно лишь тогда, когда завершаются все процессы, имеющие ссылку на рассматриваемую глобальную таблицу. При этом имена глобальных временных таблиц должны начинаться с двойного символа # (##). Для корректной работы с временными таблицами важно выполнять несколько основных рекомендаций. Для предотвращения ненужной перекомпиляции следует создавать временную таблицу в тот момент, когда это действительно необходимо. При этом выполнение каких-либо операций с временной таблицей следует осуществлять непосредственно после процесса создания, а не по прошествии времени. После завершения всех необходимых работы рекомендуется удалять локальные временные таблицы (DROP). Подобные «чистки» - это не только хороший стиль программирования, но и, в первую очередь, удобства для пользователя. В таблицу следует включать лишь только те столбцы и строки, использование которых является необходимым. В противном случае уменьшается продуктивность работы системы – за счет того, что объемы данных во временной таблицы растут, возникает необходимость частого обращения к tempdb для сохранения данных, что в коечном итоге приводит к конфликтам в данной базе данных. Роль использования временных таблиц высока. Так, временные таблицы предпочтительней постоянных в том случае, когда с базой работают множество пользователей, несколько из которых пытаются использовать одну, конкретно взятую таблицу – в этом случае локальные таблицы позволяют избежать конфликтов и увеличивают продуктивность исстемы. В случае, когда возникает необходимость временного хранения больших объемов данных, специалисты советуют не прибегать к временным таблицам, а использовать постоянную таблицу. Постоянные таблицы – отличный инструмент, являющийся альтернативой табличным переменным и временным таблицам для тех процессов, которые не должны использовать рабочую таблицу совместно с другими процессами. Для корректной работы системы и избежание журнализации рекомендуется использовать операторы SELECT…INTO вместо стандартного INSERT. BOL: Temporary Tables, and CREATE TABLE.