+38(044) 277-40-42
+38(063) 233-01-83
+38(044) 277-42-05
+38(063) 233-01-83

Курсы MS SQL Server. Изучаем использование табличных переменных

В SQL временные среды выделяются следующими способами: курсорами, табличными переменными, временными таблицами, и постоянными рабочими таблицами,но их количество постоянно уменьшается т.к. способность SQL сервера довольно велики.Временные таблицы - полезный и часто используемый инструмент, используемый для создания табличной структуры и при необходимости сохранения данных в памяти. Имена локальных временных таблиц, доступных только в текущем подключении или текущему пользователю, должны начинаться с символа #. Локальные временные таблицы удаляются при отключении пользователя от компьютеров, на которых запущен Microsoft SQL Server, или когда завершается выполнение хранимой процедуры, создавшей эти таблицы.Имена глобальных временных таблиц, доступных любым подключением или пользователем, должны начинаться с двойного символа # (##). Глобальные временные таблицы видимы любому пользователю после их создания; и они удаляются тогда, когда завершаются все процессы, ссылающиеся на такую таблицу. Рекомендуется, чтобы разработчики следовали некоторым важным рекомендациям при использовании временных таблиц.
1)  Создать временную таблицу непосредственно перед тем, как это необходимо, и выполнять любые операции с таблицей в непосредственной близости к тому моменту, в который она была создана.
 
2) Всегда удаляйте (DROP) локальную временную таблицу, когда она уже не нужна. Рекомендуется удалять таблицу сразу после завершения ее использования или, по крайней мере, в конце хранимой процедуры, что является хорошим стилем программирования, связанным с уборкой мусора. Отказ от удаления временных таблиц может привести к утечке ресурсов памяти, что оказывает отрицательное влияние на производительность системы в целом.
3) Включайте в таблицу только те столбцы и строки, в которых Вы фактически нуждаетесь, но не более.
 Временные таблицы могут постоянно находиться в основной памяти, что обеспечивает более быстрый доступ к хранящимся в них данным по сравнению с извлечением той же самой информации с диска. Эта способность временных таблиц храниться в памяти зависит от объема данных, находящихся в таблице. По мере роста размеров временных таблиц и поскольку на использование памяти сервера оказывает давление множественность выполняемых процессов и т.д., способность SQL Server хранить всю временную таблицу в памяти уменьшается. Это заставляет SQL Server больше обращаться к tempdb для сохранения данных, что может увеличить размер tempdb и вызвать конфликты в этой базе данных.Временные таблицы долго ассоциировались с плохим выполнением запросов. Хотя это и обычно для временных таблиц, что обусловлено наличием дисковых операций ввода/вывода при работе с временными объектами и конфликтов за ресурсы tempdb, вызываемых многочисленными временными объектами, они, как и курсоры, могут оказаться выгодными при определенных обстоятельствах. Не стоит принижать роль использования временных таблиц. Они оказываются предпочтительными для больших наборов данных по сравнению с табличными переменными. Однако это справедливо только в том случае, когда постоянные рабочие таблицы не могут использоваться из-за конфликтов с данными (когда многочисленные пользователи пытаются использовать одну и ту же постоянную таблицу для работы с различными данными) или когда количество данных, помещаемых во временную таблицу, достигает сотен или тысяч строк.Когда большие наборы данных требуется где-то временно сохранять, вместо временной таблицы часто лучше использовать постоянную рабочую таблицу.Постоянные рабочие таблицы являются хорошей альтернативой табличным переменным и временным таблицам для процессов, которые не должны использовать рабочую таблицу совместно с другими процессами. Эти постоянные рабочие таблицы следует создавать с помощью оператора SELECT…INTO, чтобы избежать журнализации, которая выполняется при использовании оператора INSERT.Научиться этому можно на курсах по основам программирования MS SQL Server